需要帮助重构带有Group By子句的LINQ语句

本文关键字:子句 By LINQ 语句 Group 帮助 重构 | 更新日期: 2023-09-27 18:11:34

需要重构的sql语句如下:

   var query = from p in Cache.Model.Products
               join sc in Cache.Model.ShishaCombinations on p.ProductID equals sc.ProductID
               where sc.NumberOfMixes ==  mixes
               select new { p.ProductID, p.Name };

用下面一行代码:

   group by p.ProductID

我知道这个组省略了select子句的任何需要,所以两者都可以在同一个LINQ-To-SQL语句中一起生活,所以有人可以帮助我重构上面的请吗?

帮助我删除任何重复的数据在我的结果。这就是这个问题的全部要点。根据产品使用的口味数量,产品会重复使用多次。因此,在"shishacomations"表中,一个ProductID可能会重复很多次,它使用的每种味道都是一个。我想对从上面的查询返回的结果进行分组,或者对它调用distinct,因为我不想将产品"n"次添加到我的GUI,因为它在我的结果中出现了"n"次。希望这能澄清我所要做的任何困惑

需要帮助重构带有Group By子句的LINQ语句

下面的代码就是我所需要的:

        var query1 = (from p in Cache.Model.Products
                     join sc in Cache.Model.ShishaCombinations on p.ProductID equals sc.ProductID
                     where sc.NumberOfMixes == mixes
                     select new { p.ProductID, p.Name }).Distinct();
谢谢你的回答,伙计。我知道我的答案是一个简单的lol:)

选择子句后可以使用into关键字。你不能只是分组,因为你正在投射一个匿名类型。

   var query = from p in Cache.Model.Products
               join sc in Cache.Model.ShishaCombinations on p.ProductID equals sc.ProductID
               where sc.NumberOfMixes ==  mixes
               select new { p.ProductID, p.Name } into productInfo
               group productInfo by productInfo.productId;