本文主要介绍.NET(C#)中,使用Linq时实现对多列数据进行分组的方法及示例代码。
1、groyp by 用法
List<ImageMultipleLanguage> waiteToRemove = new List<ImageMultipleLanguage>(); using (var db = new DBEntities()) { var imagesML = db.ImageMultipleLanguages //.Where(x => x.ImageID == 5162) .GroupBy(x => new { x.Language, x.ImageID }); foreach (var item in imagesML) { int index = 0; foreach (var i in item.AsQueryable()) { if (index > 0) { waiteToRemove.Add(i); } index++; } } db.ImageMultipleLanguages.RemoveRange(waiteToRemove); await db.SaveChangesAsync(); }
2、C# 3或更高版本使用匿名类型
// 声明式查询语法
var result3 =
from x in table
group x by new { x.Column1, x.Column2 } into g
select new { g.Key.Column1, g.Key.Column2, QuantitySum = g.Sum(x => x.Quantity) };
// /或方法的语法
var result4 = table.GroupBy(x => new { x.Column1, x.Column2 })
.Select(g =>
new { g.Key.Column1, g.Key.Column2 , QuantitySum= g.Sum(x => x.Quantity) });
3、C# 7.1或更高版本使用元组和推断的元组元素名
// 声明式查询语法
var result =
from x in table
group x by (x.Column1, x.Column2) into g
select (g.Key.Column1, g.Key.Column2, QuantitySum: g.Sum(x => x.Quantity));
//或方法的语法
var result2 = table.GroupBy(x => (x.Column1, x.Column2))
.Select(g => (g.Key.Column1, g.Key.Column2, QuantitySum: g.Sum(x => x.Quantity)));
浙公网安备 33010602011771号