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

时间:2011-10-15 22:14:56

标签: c# linq entity-framework .net-4.0 group-by

需要重构的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

我知道该组省略了对select子句的任何需要,因此两者可以在同一个LINQ-To-SQL语句中共存,所以有人可以帮我重构上面的内容吗?

帮助我删除结果中的所有重复数据。 < - 这是这个问题的全部内容。基于产品使用的香料数量,产品重复多次。因此,在“ShishaCombinations”表中,对于它使用的每种风味,一个ProductID可以重复多次。我想对从上面的查询返回的结果进行分组,或者在其上调用distinct,因为我不想将产品'n'次添加到我的GUI,因为它在我的结果中出现'n'次。希望这将清除我想要做的任何混乱。

2 个答案:

答案 0 :(得分:1)

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

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

Ufuk,谢谢回答配偶。我知道我的回答很简单lol :))

答案 1 :(得分:0)

您可以在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;