博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.NET(C#) System.Linq中实现多列group by(分组)的示例代码

Posted on 2022-10-20 13:34  火冰·瓶  阅读(1653)  评论(0)    收藏  举报
本文主要介绍.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)));