LINQ verbinden zweier DataTables
Hallo ich habe ein problem das verbinden von zwei Datentabellen mithilfe von LINQ.
Tabellen, die Spalten so:
table1 table2
ID, name ID, stock
1, item1 1, 100
2, item2 3, 50
3, item3
Ich habe linq to join wie diesem:
DataTable dtResult = new DataTable();
dtResult.Columns.Add("ID", typeof(string));
dtResult.Columns.Add("name", typeof(string));
dtResult.Columns.Add("stock", typeof(int));
var result = from dataRows1 in table1.AsEnumerable()
join dataRows2 in table2.AsEnumerable()
on dataRows1.Field<string>("ID") equals dataRows2.Field<string>("ID")
select dtResult.LoadDataRow(new object[]
{
dataRows1.Field<string>("ID"),
dataRows1.Field<string>("name"),
dataRows2.Field<int>("stock"),
}, false);
result.CopyToDataTable();
Problem ist, das Ergebnis zeigt nur die IDs, die in der Tabelle2.
dtResult
ID, name, stock
1, item1, 100
3, item3, 50
Ich muss auch die fehlenden Elemente. Dies ist das erwartete Ergebnis:
dtResult
ID, name, stock
1, item1, 100
2, item2, 0 //Prefer if it is "0", otherwise can be left "null"
3, item3, 50
Ich glaube, ich sollte das tun, left outer join, aber ich habe nicht genug wissen über linq. Hilfe zu schätzen.
Danke!
InformationsquelleAutor der Frage user1080533 | 2013-12-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Damit werden Sie standardmäßig auf 0, wenn die Zeile nicht vorhanden in Tabelle2:
MSDN Quelle
InformationsquelleAutor der Antwort Sven Grosen
versuchen Sie dies:
InformationsquelleAutor der Antwort Masoume Karvar
müssen Sie einfach nutzen mitmachen..into-Klausel wie diese
InformationsquelleAutor der Antwort Grundy
versuchen, diese
InformationsquelleAutor der Antwort Hozefa Laxmidhar