我想对一个数据表执行聚合查询以创建另一个数据表。我无法更改用于创建初始数据表的SQL。
原始数据表:(一切都是整数)
TeamID | MemberID -------|----------- 1 | 1 1 | 2 1 | 3 2 | 4 2 | 5
所需结果:
TeamID | MemberIDCount -------|-------------- 1 | 3 2 | 2
如果是SQL,我可以做
Select TeamID, Count(*) From Table Group By TeamID
但是在我的应用程序中,我唯一知道如何处理的方法是这样的:
Dictionary<int,int> d = new Dictionary<int,int>(); foreach (DataRow dr in dt.Rows) { if (d.ContainsKey(dr.ID)) { d[dr.ID] = d[dr.ID] + 1; } else { d.Add(dr.ID, 1); } }
有没有更好的办法?
您可以使用Linq。
var result = from row in dt.AsEnumerable() group row by row.Field<int>("TeamID") into grp select new { TeamID = grp.Key, MemberCount = grp.Count() }; foreach (var t in result) Console.WriteLine(t.TeamID + " " + t.MemberCount);