//data为DataTable对象
//把DataTable对象转化为List对象
List<Enq_Item_Vend> eivList = BeanUtil.ToEntity<Enq_Item_Vend>(data);

要求需要进行分组,1:依据供应商进行分组(VEND_ID);2:依据来源行进行分组(Order_Type_N,Order_Id)

//1) 依据Vend_Id字段进行分组
IEnumerable<IGrouping<string, Enq_Item_Vend>> query1 = eivList.GroupBy(eiv => eiv.Vend_Id);
//2) 依据Order_Type_N,Order_Id 分组(多字段分组)
var query2 = eivList.GroupBy(eiv => new { eiv.Order_Type_N, eiv.Order_Id });

此时,获取的query1,query2对象就是分组之后的对象,但是需要注意的是query1,query2并不是同一个对象;

query对象可以继续使用select进行linq查询:

var ret1 = query1.Select(group => new {
                        Keys = group.Key,
                        TotalValue = group.Min(p => p.Vat_Price)//group有min/max等聚合函数

返回的ret1对象可以继续查询

decimal sumMinValue = ret1.Sum(r => r.TotalValue);//依然可以使用SUM/MIN/MAX等聚合函数

这里得出的sumMinValue即为List<Enq_Item_Vend>数据集中依据Vend_Id分组,每个组的最小值之和;

C# Linq List 小结:1) List进行groupBy分组类:Enq_Item_Vendpublic class Enq_Item_Vend { public decimal Id { set; get; } public decimal Order_Id { set; get; } public decimal Order_Type_N { set; ge... public string Name { set; get; } public int Age { set; get; } public string Gender { set; get; } public override string ToString() => Name; 2、准备要使用的List,用于分组(GroupBy): List personList = new List new Person
四、联接操作符 联接是指将一个数据源对象与另一个数据源对象进行关联或者联合的操作。这两个数据源对象通过一个共同的值或者属性进行关联。 LINQ有两个联接操作符:Join和GroupJoin。 1. Join Join操作符类似于T-SQL中的inner join,它将两个数据源相联接,根据两个数据源中相等的值进行匹配。例如,可以将产品表与产品类别表相联接,得到产品名称和与其相对应的类别名称。以下的代码演示了这一点: //查询语法 var query = (from p in db.Products public int id { set; get; } public string name { set; get; } public int typeid { set; get; } #region 准备数据 List<UserInfo> U
// 查询数据集 var odpList = _cmd.Broker.RetrieveMultiple<odp_account>(sql); // 根据 countyidname 字段进行分组 var groupList = odpList.GroupBy(x => x.countyidName).Select(x => new { countyidName = x.Key, list = x.ToList() }); 分组后结果集如下
声明:个人技术水平有限,欢迎指正。不喜勿喷 说明:本人使用的是封装好的Grid,分组合计行的值,是使用grid上单元格的做的合计,速度非常慢。据说LINQ技术比较快,所以尝试了一下,速度确实提高很多。但是需要自己写LinQ语句,对开发人员来说,比较麻烦,每个程序都需要单独写自己的LinQ语句。 问题:可否传入分组列与合计列,自动进行分组合计? 在网上找了很多,发现Scott大神写了一
在整理资料的时候常常都需要给资料做分组,以便更进一步的分析及处理,最常见的分组处理应该就是在餐厅问券上常常会看到的年龄组别的部分,因各个年龄层的喜好并不相同,所以做分组对于分析资料来说非常的重要,在LINQ的应用上也是如此,接著让我们来看看GroupBy要怎麽使用吧。 使用GroupBy时指定元素的属性(栏位),它就会以这个属性做分组的处理。 请看下面的示意图(节录自Microsoft Docs): 我们有一个英文字集合的物件Source,想要把各个英文字的资料抓出来,这时就会用到分组的处理,处