【问题标题】:join with multiple group by element and select extra columns按元素加入多个分组并选择额外的列
【发布时间】:2014-09-26 02:13:00
【问题描述】:

请您帮忙将其从 sql 转换为 linq,我是 linq 的新手,一直在尝试,但未能成功。让我知道这是否可能?

SELECT max(Products.ProductID) as ProductID, Products.SKU, Products.Name, Products.RRP, Products.Price,
                     max(Products.FrontTall) as FrontTall,  
                     ProductsCategory.SortOrder, 
                     Products.ColorValue, 
                     max(Products.ColorImg) as ColorImg, 
                     Products.IsPrimary, 
                     Products.Visible 
                     FROM Products INNER JOIN ProductsCategory ON Products.ProductID = ProductsCategory.ProductID  
                     WHERE  (ProductsCategory.CategoryID =  5 ) AND (Products.Visible = 1) AND (Products.Inactive = 0) AND (Products.Deleted = 0 or Products.Deleted is null)  
                    GROUP BY SKU, Products.Name, RRP, Price, ColorValue, ProductsCategory.SortOrder, IsPrimary, Visible

这就是我正在尝试的

 var products = (from p in db.Products
                            join cp in db.ProductsCategories on p.ProductID equals cp.ProductID
                            where cp.CategoryID == catId && p.Visible == true && p.Inactive == false && (p.Deleted == null || p.Deleted == false) 
                            group p by new { 
                                p.SKU,
                                p.Name,
                                p.RRP,
                                p.Price,
                                p.ColorValue,             
                                p.IsPrimary,
                                p.Visible,
                                cp.SortOrder
                            } into grouped
                            select new { 
                                ProductID,
                                FrontTall,
                                ColorImg,
                                SKU = grouped.Key.SKU,
                                Name = grouped.Key.Name,                               
                                RRP = grouped.Key.RRP,
                                Price = grouped.Key.Price,
                                ColorValue = grouped.Key.ColorValue,                               
                                IsPrimary = grouped.Key.IsPrimary,
                                Visible = grouped.Key.Visible,
                                SortOrder = grouped.Key.SortOrder
                            })
                         .OrderBy(x => x.SortOrder);

我需要获取 ProductID、FrontTall 和 ColorImg 字段值,但不包含在 group by 中

提前致谢。 基什

【问题讨论】:

    标签: c# sql linq linq-to-sql


    【解决方案1】:
    select new {ProductID = grouped.Max(x => x.ProductID)}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      相关资源
      最近更新 更多