首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求一linq分组,来了就有分解决方案

2012-01-09 
求一linq分组,来了就有分C# codeDataTable linshitable new DataTable()var x un_unittable.Rows.Cast

求一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() };

热点排行