2012-05-16 35 views
0

如何從數據表中選擇所有字段?例如:如何從數據表中選擇所有字段

var common = from c in dt1.AsEnumerable() 
      join x in dt2.AsEnumerable() on c.Field<int>("ID") equals 
      x.Field<int>("ID") 
      select 
      new object[] 
      { 
       c["Col1"], x["NameCol1"], x["NameCol2"], x["NameCol3"], x["NameCol4"] 

      }; 

如何爲x選擇所有字段? (如果x有20個colums我不想爲所有字段寫名字)

+1

嗯,對不起,我似乎已經搞砸了我所知道的關於LINQ加入...只是爲了記錄:這是擴展方法的轉換(這次應該工作):'var res = dt1.AsEnumerable()。Join(dt2.AsEnumerable(),c => c.Field ( 「ID」),x => x.Field (「ID」),(c,x)=> new {...})'。但從那時起,不幸的是我目前無法幫助你。我想說,你必須遍歷所有現有的屬性。我認爲,LINQ確實缺少一個'*'操作符...... – phg

回答

0

也許這會有所幫助:

 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(); 
            } 
            ); 
相關問題