也許這會有所幫助:
var customers = new DataTable();
customers.Columns.Add("ID", typeof(int));
customers.Columns.Add("Name");
customers.Rows.Add(1, "Tom");
customers.Rows.Add(2, "Dick");
customers.Rows.Add(3, "Harry");
var purchases = new DataTable();
purchases.Columns.Add("ID");
purchases.Columns.Add("Description");
purchases.Columns.Add("PurchaseID", typeof(int));
purchases.Rows.Add(1, "Bike", 1);
purchases.Rows.Add(2, "Holiday", 1);
purchases.Rows.Add(3, "Bike", 2);
purchases.Rows.Add(4, "Car", 3);
var query = customers.AsEnumerable().Join(purchases.AsEnumerable(),
cust => cust.Field<int>("ID"),
purch => purch.Field<int>("PurchaseID"),
(cust, purch) =>
{
var res = new List<object>();
res.AddRange(cust.ItemArray);
res.AddRange(purch.ItemArray);
return res.ToArray();
}
);
嗯,對不起,我似乎已經搞砸了我所知道的關於LINQ加入...只是爲了記錄:這是擴展方法的轉換(這次應該工作):'var res = dt1.AsEnumerable()。Join(dt2.AsEnumerable(),c => c.Field( 「ID」),x => x.Field (「ID」),(c,x)=> new {...})'。但從那時起,不幸的是我目前無法幫助你。我想說,你必須遍歷所有現有的屬性。我認爲,LINQ確實缺少一個'*'操作符...... –
phg