DataTable 中,应用Linq文

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();
View Code

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();

Love it, and you live without it
原文地址:https://www.cnblogs.com/tomclock/p/6087870.html