通过

2017-08-28 44 views
0

我有数据表中的列数据表自组选择和列通过

transactionid,tenderid,amount,bankcode,CardType 

我需要通过transactionid,tenderid,bankcode,CardType

这从它组中选择transactionid,tenderid,Sum(amount),bankcode,CardType是我达到了,但我不知道我应该键入选择

dttransactiontenders= dttransactiontenders.AsEnumerable() 
     .GroupBy(r => new { Col1 = r["transactionid"], Col2 = r["tenderid"], Col3 = r["bankcode"], Col4 = r["CardType"] }) 
     .Select(g => g.OrderBy(r => r["transactionid"]).First()) 
     .CopyToDataTable(); 

回答

1

既然你想计算总和,你不能使用现有的DataRows,你必须创建新的。那么你不能使用CopyToDataTable。如果你想覆盖旧DataTable简单地分配新

DataTable dtResult = dttransactiontenders.Clone(); // same columns, empty 
var query = dttransactiontenders.AsEnumerable() 
     .GroupBy(r => new { Col1 = r["transactionid"], Col2 = r["tenderid"], Col3 = r["bankcode"], Col4 = r["CardType"] }); 

foreach(var g in query) 
{ 
    DataRow addedRow = dtResult.Rows.Add(); 
    addedRow["transactionid"] = g.Key.Col1; 
    addedRow["tenderid"] = g.Key.Col2; 
    addedRow["bankcode"] = g.Key.Col3; 
    addedRow["CardType"] = g.Key.Col4; 
    addedRow["amount"] = g.Sum(r => r.Field<int>("amount")); 
} 

dttransactiontenders = dtResult; 
+0

感谢您的帮助,相反,你可以使用这种方法 – CODER