大神們,需將dt中按column1列 group by 匯總 val1列,再將匯總的值更新到 dat 中對應的val1列中
DataTable dt = new DataTable();
DataTable dat = new DataTable();
DataColumn dc = new DataColumn("column1", typeof(string));
dt.Columns.Add(dc);
DataColumn dc3 = new DataColumn("val1", typeof(int));
dt.Columns.Add(dc3);
dt.Rows.Add("張三", 10);
dt.Rows.Add("張三", 10);
dt.Rows.Add("張三", 100);
dt.Rows.Add("張三", 100);
dt.Rows.Add("張三", 100);
dt.Rows.Add("張三", 100);
dt.Rows.Add("張三fewfwwwwwwwwwwwwwww", 100);
dt.Rows.Add("張三fewfwfwfwfw", 100);
dt.Rows.Add("王五", 100);
dt.Rows.Add("王五", 100);
DataColumn dct = new DataColumn("column1", typeof(string));
dat.Columns.Add(dct);
DataColumn dc3t = new DataColumn("val1", typeof(int));
dat.Columns.Add(dc3t);
dt.Rows.Add("張三", 0);
dt.Rows.Add("王五", 0);
dt.Rows.Add("張三fewfwwwwwwwwwwwwwww", 0);
dt.Rows.Add("張三fewfwfwfwfw", 0);
var query = from t in dt.AsEnumerable()
group t by new { t1 = t.Field<string>("column1") } into m
select new
{
column1 = m.Key.t1,
score = m.Sum(n => n.Field<int>("val1"))
};
uj5u.com熱心網友回復:
干嘛說這么復雜,不就是給 第二個table賦值的事嗎? 新datatable dttotal 舊datatable dtdetailfor(datarow drtotal in dttotal)
{
for(datarow drmx in dtdetail)
{
if(drtotal["名稱"].tostring()==drmx["名稱"].tostring())
{
drtotal["值"]=convert.toint32(drmx["值"].)
}
}
}
uj5u.com熱心網友回復:
drtotal["值"]+=convert.toint32(drmx["值"].)uj5u.com熱心網友回復:
可以用LINQ實作嗎,記錄比較多
uj5u.com熱心網友回復:
主從表計算這種事情,datatable,dataset本身就可以做,只是現在用datatable的人少,所以這種傳統代碼面臨失傳(嘿嘿,要不要申請非遺啊)DataTable dt = new DataTable();
DataTable dat = new DataTable();
DataColumn dc = new DataColumn("column1", typeof(string));
dt.Columns.Add(dc);
DataColumn dc3 = new DataColumn("val1", typeof(int));
dt.Columns.Add(dc3);
dt.Rows.Add("張三", 10);
dt.Rows.Add("張三", 10);
dt.Rows.Add("張三", 100);
dt.Rows.Add("張三", 100);
dt.Rows.Add("張三", 100);
dt.Rows.Add("張三", 100);
dt.Rows.Add("張三fewfwwwwwwwwwwwwwww", 100);
dt.Rows.Add("張三fewfwfwfwfw", 100);
dt.Rows.Add("王五", 100);
dt.Rows.Add("王五", 100);
DataColumn dct = new DataColumn("column1", typeof(string));
dat.Columns.Add(dct);
dat.PrimaryKey=new DataColumn[]{dct};
dat.Rows.Add("張三");
dat.Rows.Add("王五");
dat.Rows.Add("張三fewfwwwwwwwwwwwwwww");
dat.Rows.Add("張三fewfwfwfwfw");
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.Tables.Add(dat);
//直接建立主從關系
ds.Relations.Add(dct,
dc);
//給dat新增一個列,設定運算式讓他根據運算式,直接匯總欄位
dat.Columns.Add("val1", typeof(int), "Sum(Child.val1)");
運行后結果:
uj5u.com熱心網友回復:
用datatable少了,現在都用的是啥,我用了大量的datatable
uj5u.com熱心網友回復:
Linq語法。。dt.AsEnumerable().Where(w => w.RowState != DataRowState.Deleted).Sum(t => t.Field<decimal?>("欄位名"))
uj5u.com熱心網友回復:
需要更新到dat中val1列
uj5u.com熱心網友回復:
List<DataRow> rows = query.ToList<DataRow>();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/281791.html
標籤:C#
上一篇:某ACCESS資料庫在打開時出現錯誤提示:MICROSOFT ACCESS資料庫引擎已停止該行程,因為您和其他用戶正在嘗試同時更改同一資料,請問如何解決
