繁体   English   中英

在使用Group By子句重构LINQ语句时需要帮助吗?

[英]Need help refactoring a LINQ statement with a Group By clause?

在下面找到需要重构的Linq-To-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

我知道group by省略了对select子句的任何需要,因此两者都可以一起生活在同一LINQ-To-SQL语句中,因此有人可以帮助我重构以上内容吗?

为了帮助我删除结果中的所有重复数据。 <-这是这个问题的重点。 根据产品使用的调味剂的数量,将产品重复多次。 因此,在“ ShishaCombinations”表中,一个ProductID可能会针对其使用的每种口味重复多次。 我想对上述查询返回的结果进行分组,或对其进行调用,因为我不想将乘积“ n”次添加到我的GUI中,因为在结果中出现“ n”次。 希望这将消除对我正在尝试做的任何混淆。

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

        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();

乌福克,谢谢你答应伴侣 我知道我的回答很简单:)

您可以在select子句后使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM