Frage : Wie kombiniere ich 2 Lists in ein DataTable using LINQ?

Hallo: das

I morgens versuchend, 2 Datenquellen in ein DataTable using LINQ und CopyToDataTable.
The Datenquellen zu kombinieren sind von der Art List>.



//die Tabelle u. columns
DataTable Reisenden;

Travelers = neues DataTable („Reisende“);
DataColumn Spalte;
column = neues DataColumn („Vor und Zuname“, Type.GetType („System.String“));
Travelers.Columns.Add (column);
column = neues DataColumn („IsFreePlace“, Type.GetType („System.Boolean“));
Travelers.Columns.Add (column);
column = neues DataColumn („IndividualPaymentAmount " , Type.GetType („System.Decimal“));
Travelers.Columns.Add (column);


////////////////////////////////////////////////////////////////////////////////////////////////////
//die Frage, zum von 2 Datenquellen in ein LINQ query
//
//Datenquellen zu vereinigen haben die folgende Form:
//
//  ListOfItems --> ListA, int>>
//
//Informationen --> ListB, decimal>>
//
//
////////////////////////////////////////////////////////////////////////////////////////////////////
var Frage = (von Pax in ListOfItems
vom pInfo in Information
wo Pax. Wert == pInfo.Key.TravelerID
wählen neues {Pax. Key.FirstName,
Pax. Key.LastName,
Pax. Key.IsFreePlace,
pInfo.Value}) vor;


//Speicher dieses vereinigte Info in ein table
Travelers = query.CopyToDataTableRow> ();


////////////////////////////////////////////////////////////////////////////////////////////////////
//, wenn ich das oben genannte versuche, erhalte ich die folgende Compilerstörung:
////////////////////////////////////////////////////////////////////////////////////////////////////
Error 31 Fallargument: kann nicht von „System.Collections.Generic.IEnumerableousType#1>“ in 'System.Collections.Generic.IEnumerable.Data.DataRow>'< Br/>
Error 30 „System.Collections.Generic.IEnumerableousType#1>“ umwandeln enthält nicht eine Definition für „CopyToDataTable“ und die beste Verlängerungsmethodenüberlastung „System.Data.DataTableExtensions. CopyToDataTable (System. Collections. Generic.IEnumerable)“ hat etwas unzulässiges arguments

////////////////////////////////////////////////////////////////////////////////////////////////////
Next, ich versuchte das folgende:
////////////////////////////////////////////////////////////////////////////////////////////////////
IEnumerable Frage = (von Pax in ListOfItems
vom pInfo in Information
wo Pax. Wert == pInfo.Key.TravelerID
wählen neues {Pax. Key.FirstName,
Pax. Key.LastName,
Pax. Key.IsFreePlace,
pInfo.Value}) vor;

////////////////////////////////////////////////////////////////////////////////////////////////////
//, wenn ich das oben genannte versuche, erhalte ich die folgende Compilerstörung:
////////////////////////////////////////////////////////////////////////////////////////////////////
Can nicht implizit Bekehrtart „System.Collections.Generic.IEnumerableousType#1>“ zu „System.Collections.Generic.IEnumerable.Data.DataRow>“. Eine ausdrückliche Umwandlung existiert (sind Sie eine Form verfehlend?)



I kann die 1. Methode leicht gerade anwenden und wiederholt dann mit einer foreach Schleife, aber I would
like, um zu versuchen, die CopyToDatTable () Methode des System.Data.DataTableExtensions.


Thanks im Voraus zu verwenden,
JohnB

Antwort : Wie kombiniere ich 2 Lists in ein DataTable using LINQ?

Hallo jxbma;

Die Frage, die Sie versuchen durchzuführen und seine Resultate in ein DataTable mit zu füllen arbeitet nicht. Die Syntax für das CopyToDataTable ist, wie folgt:

Öffentlichkeit geteilte Funktion CopyToDataTable (von T als DataRow) (_
      Quelle als IEnumerable (von T) _
) Als DataTable

Aber, was Sie haben, ist das folgende:

var-Frage = (von Pax in ListOfItems
                   vom pInfo in den Informationen
                   wo Pax. Wert == pInfo.Key.TravelerID
                   neues vorwählen {Pax. Key.FirstName,
                                        Pax. Key.LastName,
                                        Pax. Key.IsFreePlace,
                                        pInfo.Value});

Welche die Art der Frage von der anonymen Art wie ist, können von der auserwählten Klausel gesehen werden, in der Sie das Schlüsselwort verwenden, das ohne eine Art neu ist. Wenn Sie Liste zwei die Resultate fragen, ist von irgendeiner Liste oder von IEnumerable. Es gibt keine Funktion, die eine Liste in ein DataRow von einem DataTable umwandelt.

Die Lösung ist, durch die Resultate zu schlingen und ein DataRow vom DataTable für jedes Element des eingestellten Resultats zu verursachen.

Fernando

Weitere Lösungen  
 
programming4us programming4us