Linq文通常用于代替SQL文进行数据查询。其简洁和舒服的表达形式,深受本人喜爱。
最近在普通的对象数据操作时,也用类似的方法进行操作。
var sumRows = dt.Copy().Select().ToList().GroupBy(m => new { key1 = m["JIGYOCD"].ToString(), key2 = m["NYUSYUYMD"].ToString(), key3 = m["TELNO"].ToString() }) .ToList(); dt.Clear(); sumRows.ForEach(m => { DataRow row = dt.NewRow(); row.ItemArray = m.First().ItemArray; row["KOGUTI"] = m.Sum(x => Convert.ToInt32(x["KOGUTI"].ToString())); row["SIHARAIJYURYO"] = m.Sum(x => Convert.ToDecimal(x["SIHARAIJYURYO"].ToString())); row["UNSORYO"] = m.Sum(x => Convert.ToDecimal(x["UNSORYO"].ToString())); row["KYORI"] = m.Sum(x => Convert.ToInt32(x["KYORI"].ToString())); row["KEISANUNTIN"] = m.Sum(x => Convert.ToDecimal(x["KEISANUNTIN"].ToString())); row["SAGAKU"] = m.Sum(x => Convert.ToDecimal(x["SAGAKU"].ToString())); dt.Rows.Add(row); }); dt.AcceptChanges();
var sumRows = dt.Copy().Select().ToList().GroupBy(m =>
new { key1 = m["JIGYOCD"].ToString(), key2 = m["NYUSYUYMD"].ToString(), key3 = m["TELNO"].ToString() })
.ToList();
dt.Clear();
sumRows.ForEach(m =>
{
DataRow row = dt.NewRow();
row.ItemArray = m.First().ItemArray;
row["KOGUTI"] = m.Sum(x => Convert.ToInt32(x["KOGUTI"].ToString()));
row["SIHARAIJYURYO"] = m.Sum(x => Convert.ToDecimal(x["SIHARAIJYURYO"].ToString()));
row["UNSORYO"] = m.Sum(x => Convert.ToDecimal(x["UNSORYO"].ToString()));
row["KYORI"] = m.Sum(x => Convert.ToInt32(x["KYORI"].ToString()));
row["KEISANUNTIN"] = m.Sum(x => Convert.ToDecimal(x["KEISANUNTIN"].ToString()));
row["SAGAKU"] = m.Sum(x => Convert.ToDecimal(x["SAGAKU"].ToString()));
dt.Rows.Add(row);
});
dt.AcceptChanges();