C# 需要帮助用GROUPBY子句重构LINQ语句吗?

C# 需要帮助用GROUPBY子句重构LINQ语句吗?,c#,linq,entity-framework,.net-4.0,group-by,C#,Linq,Entity Framework,.net 4.0,Group By,以下是需要重构的Linq到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.Nam

以下是需要重构的Linq到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语句中共存,那么有人能帮我重构上面的语句吗


帮助我删除结果中的任何重复数据 您可以在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;

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

        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,谢谢你的回答,伙计。我知道我的答案很简单,哈哈:)

真的不清楚“重构后的SQL”是什么意思。你不能只是分组,因为你需要NumberOfMixes属性。(如果你能展示你想要得到的结果,这可能会帮助你的问题变得更清楚。)似乎有效,但没有乐趣?我完全理解您在回答中所说的内容,但即使没有group by子句,您的查询也会返回与我完全相同的结果:S@IbrarMumtaz那么我猜ProductID列是唯一的ID,所以对该列进行分组没有任何作用。因为在iGroup接口上不使用元素,所以这肯定是不必要的。你到底想做什么?