Roy*_*mir 3 .net c# linq datatable
我有这个简单的数据表:
type (string) | cnt (int)
_____________________________________
aaa 1
aaa 2
aaa 10
bbb 1
bbb 1
Run Code Online (Sandbox Code Playgroud)
我想生成这样的1个匿名类型:
{
sumAAA= 13 , sumBBB=2 //13=1+2+10....
}
Run Code Online (Sandbox Code Playgroud)
类似的东西:(伪代码)
var obj= dt.AsEnumerable().Select(f=> new { sumAAA =f.sumOfCntOfAaa , sumBBB =f.sumOfCntOfBbb });
Run Code Online (Sandbox Code Playgroud)
任何帮助?
编辑,这会对你有所帮助
DataTable dt = new DataTable("myTable");
dt.Columns.Add("cnt", typeof (int));
dt.Columns.Add("type", typeof (string));
DataRow row = dt.NewRow();
row["cnt"] = 1;
row["type"] = "aaa";
dt.Rows.Add(row);
row = dt.NewRow();
row["cnt"] = 2;
row["type"] = "aaa";
dt.Rows.Add(row);
row = dt.NewRow();
row["cnt"] = 10;
row["type"] = "aaa";
dt.Rows.Add(row);
row = dt.NewRow();
row["cnt"] = 1;
row["type"] = "bbb";
dt.Rows.Add(row);
row = dt.NewRow();
row["cnt"] = 1;
row["type"] = "bbb";
dt.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)
充满活力:
dynamic result = new ExpandoObject();
dt.AsEnumerable()
.GroupBy(r => r.Field<String>("type"))
.ToList()
.ForEach(g=> ((IDictionary<String, Object>)result)["sum" + g.Key.ToUpper()] = g.Sum(r=>r.Field<Int32>("cnt")));
Console.WriteLine(result.sumAAA);
Console.WriteLine(result.sumBBB);
Run Code Online (Sandbox Code Playgroud)
适用于不同types 的任意数量,不仅仅是aaa和bbb.
输出:
13
2 2
| 归档时间: |
|
| 查看次数: |
1494 次 |
| 最近记录: |