Извините, но блог написан на 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 по ссылке выше

ура

Ответы на вопрос(4)

Ваш ответ на вопрос