求一linq分组,来了就有分
- C# code
DataTable linshitable = new DataTable(); var x =un_unittable.Rows.Cast<DataRow>(); var y = from p in x group p by p[0] into g select new { g.Key, TotalPrice = g.Sum(p => Convert.ToInt16(p[1])) }; DataRow drows; linshitable.Columns.Add("barcode", typeof(string)); linshitable.Columns.Add("number", typeof(int)); linshitable.Columns.Add("goodsname",typeof(string)); foreach (var v in y) { drows = linshitable.NewRow(); drows[0] = v.Key; drows[1] = v.TotalPrice; linshitable.Rows.Add(drows); } return linshitable;datatable 如下
0 1 2 3
苹果 1 张三 哈尔滨
鸭梨 2 李四 北京
苹果 1 王五 哈尔滨
我希望按照水果名称,和地点名称,进行分组求和,但是要显示4列,如果用户名不同,则在重复的数据中随意取一个
答案即为:
苹果 2 张三 哈尔滨
鸭梨 2 李四 北京
或
苹果 2 王五 哈尔滨
鸭梨 2 李四 北京
皆可
求linq写法,我暂时只能写出按照一个判断的,就是我上面的语句,2个判断条件怎么写? 怎么从重复中取2项目?
[解决办法]
List<T> lst= new List<T>();
var l= lst
.GroupBy(x => new { x.Age, x.Sex })
.Select(group => new {
a= group.Key, Count = group.Count()
});
var l= from p in lst
group p by new { p.Age, p.Sex } into g
select new { a = g.Key, Count = g.Count() };