Извините, но блог написан на C #, но я просто использовал IEnumerable для переменной LINQ и проверил .Current, чтобы увидеть, вернул ли он какие-либо строки.
т, ребята, так что я столкнулся с чем-то, что, возможно, является недостатком метода Extension .CopyToDataTable.
Этот метод используется путем импорта (в VB.NET) System.Data.DataTableExtensions, а затем вызова метода для IEnumerable. Это можно сделать, если вы хотите отфильтровать таблицу данных с помощью LINQ, а затем восстановить таблицу данных в конце.
то есть:
Imports System.Data.DataRowExtensions
Imports System.Data.DataTableExtensions
Public Class SomeClass
Private Shared Function GetData() As DataTable
Dim Data As DataTable
Data = LegacyADO.NETDBCall
Data = Data.AsEnumerable.Where(Function(dr) dr.Field(Of Integer)("SomeField") = 5).CopyToDataTable()
Return Data
End Function
End Class
В приведенном выше примере фильтрация «ГДЕ» может не дать результатов. Если это происходит, CopyToDataTable генерирует исключение, потому что нет DataRows.
Почему?
Правильным поведением должно быть возвращение в таблицу данных с Rows.Count = 0.
Может кто-нибудь придумать чистый обходной путь, чтобы тот, кто вызывает CopyToDataTable, не знал об этой проблеме?
System.Data.DataTableExtensions является статическим классом, поэтому я не могу переопределить поведение .... есть идеи? Я что-то пропустил?
ура
ОБНОВИТЬ:
Я представил это как вопроссоединять, Я все еще хотел бы некоторые предложения, но если вы согласны со мной, вы можете проголосовать за проблему в Connect по ссылке выше
ура