Umgang mit einem Fehler in System.Data.DataTableExtensions.CopyToDataTable ()

8

Hey Leute, also bin ich auf etwas gestoßen, was vielleicht ein Fehler in der Extension-Methode .CopyToDataTable ist.

Diese Methode wird verwendet, indem System.Data.DataTableExtensions (in VB.NET) importiert und dann die Methode für ein IEnumerable-Objekt aufgerufen wird. Sie würden dies tun, wenn Sie eine Datentabelle mit LINQ filtern und dann die DataTable am Ende wiederherstellen möchten.

d. h .:

%Vor%

Im obigen Beispiel gibt die "WHERE" -Filterung möglicherweise keine Ergebnisse zurück. Wenn dies geschieht, löst CopyToDataTable eine Ausnahme aus, da keine DataRows vorhanden sind.

Warum?

Das korrekte Verhalten sollte sein, eine DataTable mit Rows.Count = 0 zurückzugeben.

Kann jemand eine saubere Umgehung dazu denken, so dass derjenige, der CopyToDataTable aufruft, dieses Problem nicht kennen muss?

System.Data.DataTableExtensions ist eine statische Klasse, also kann ich das Verhalten nicht überschreiben .... irgendwelche Ideen? Habe ich etwas verpasst?

Prost

UPDATE:

Ich habe dies als Problem an Connect gesendet. Ich hätte gerne noch Vorschläge, aber wenn Sie mir zustimmen, können Sie das Problem über den obigen Link bei Connect ablehnen.

Prost

    
andy 11.03.2009, 23:27
quelle

4 Antworten

2

Bis Microsoft dieses Problem behebt, hier ein Problem:

Erstellen Sie Ihre eigene Extension-Methode, die die CopyToDataTable-Methode verwendet, wenn DataRows vorhanden sind. Wenn nicht, gibt sie eine leere DataTable zurück.

VB.NET

%Vor%

C #;

%Vor%     
andy 17.03.2009, 04:12
quelle
12
%Vor%

.AsDataView().ToTable() gibt eine leere Tabelle mit der gleichen Struktur wie someDataTable zurück, wenn jetzt Zeilen von .Where()

zurückgegeben werden     
Vince 11.03.2010 17:40
quelle
1

Ich bin heute auf dieses Problem gestoßen und habe eine Workaround wenn es hilft.

Entschuldigung, aber das Blog ist in C #, aber ich habe gerade ein IEnumerable für die Variable LINQ verwendet und überprüfe .Current, um zu sehen, ob es irgendwelche Zeilen zurückgegeben hat.

    
Dominic Zukiewicz 21.06.2010 22:32
quelle
0
%Vor%     
Sharanbasappa 11.01.2017 05:01
quelle