C#LinqList⼩结groupBy
C# Linq List ⼩结:
1) List进⾏groupBy分组
类:Enq_Item_Vend
public class Enq_Item_Vend {
public decimal Id { set; get; }
public decimal Order_Id { set; get; }
public decimal Order_Type_N { set; get; }
public string Vend_Id { set; get; }
public decimal Vat_Price { set; get; }
...
public Enq_Item_Vend() {}
}
现在有这么⼀个对象List<Enq_Item_Vend>
//data为DataTable对象
//把DataTable对象转化为List对象
List<Enq_Item_Vend> eivList = BeanUtil.ToEntity<Enq_Item_Vend>(data);
groupby分组要求需要进⾏分组,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分组,每个组的最⼩值之和;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论