Как иметь дело с дефектом в Системе. Данные. DataTableExtensions. CopyToDataTable ()

Вы можете перебрать массив объектов и использовать indexOf , чтобы проверить, присутствует ли свойство name текущего объекта в массиве строк

var objects = [{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
var strings = ['a','b'];

objects.forEach(function(obj) {
    if (strings.indexOf(obj.name)!=-1) obj.is = true;
})

console.log(objects);
8
задан andy 11 March 2009 в 23:52
поделиться

3 ответа

До Microsoft устраняют эту проблему, вот работа вокруг:

Создайте свой собственный Дополнительный метод, который использует метод CopyToDataTable, если существуют DataRows, если нет, то он возвращает пустой DataTable.

VB.NET

    Imports System.Data

Namespace CustomExtensions
    Public Module DataRowExtensionsOverride

        <System.Runtime.CompilerServices.Extension()> _
        Public Function CopyToDataTableOverride(Of T As DataRow)(ByVal Source As EnumerableRowCollection(Of T)) As DataTable

            If Source.Count = 0 Then
                Return New DataTable
            Else
                Return DataTableExtensions.CopyToDataTable(Of DataRow)(Source)
            End If

        End Function

    End Module
End Namespace

C#;

public static class DataRowExtensionsOverride
    {

        public static DataTable CopyToDataTableOverride<T>(this IEnumerable<T> Source) where T : DataRow {

            if (Source.Count() == 0) {
                return new DataTable();
            } else {
                return DataTableExtensions.CopyToDataTable<T>(Source);
            }
        }
    }
2
ответ дан 5 December 2019 в 11:27
поделиться
someDataTable.AsEnumerable().Where(r => r.Field<string>("SomeField") == "SomeValue").AsDataView().ToTable();

.AsDataView().ToTable() возвращает пустую таблицу с той же структурой, что и someDataTable, если есть строки, возвращенные из .Where()

12
ответ дан 5 December 2019 в 11:27
поделиться

Сегодня я столкнулся с этой проблемой и разработал обходной путь , если это поможет.

Извините, но блог написан на C #, но я просто использовал IEnumerable для переменной LINQ и проверил .Current, чтобы увидеть, вернул ли он какие-либо строки.

1
ответ дан 5 December 2019 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: