【问题标题】:How can I use LINQ to select columns from multiple tables with Count and Group By?如何使用 LINQ 从具有 Count 和 Group By 的多个表中选择列?
【发布时间】:2014-02-28 08:27:51
【问题描述】:

如何使用 LINQ 从具有 Count 和 Group By 的多个表中选择列?

这是我用 C# 编写的 SQL 查询,我想将其转换为 LINQ 查询。

string sqlProduct = string.Format(@"SELECT protype.idType, TypeName, **COUNT(idPro) as proNumber** 
                                    FROM protype, product 
                                    WHERE protype.idType=product.idType 
                                    **GROUP BY protype.idType, TypeName** 
                                    ORDER BY TypeName");
 DataTable dt = new DataTable();
 dt = Shop_Query.Select_Query(sqlProduct);
 lvMenu.DataSource = dt;
 lvMenu.DataBind();

【问题讨论】:

  • 可以使用join吗?

标签: c# sql linq


【解决方案1】:

试试这个:

var query = dbContext.Protypes.Join(dbContext.Products,
                  protype => protype.idType,
                  product => product.idType,
                  (protype, product) => new { Protype = protype, Product = product })
                  .GroupBy(s => new { s.Protype.idType, Product.TypeName })
                  .Select(s => new
                  {
                     IdType = s.First().Protype.idType,
                     TypeName = s.First().Product.TypeName,
                     Count = s.Count()
                  });

这个查询中有很多假设。

  • 我假设您的 Linq-to-Sql 上下文为 dbContext
  • 我假设你的上下文类被命名为ProductsProTypes
  • 我假设TypeName 字段属于产品表

现在你需要了解 linq GroupBy 和 Linq Join

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 2016-07-23
    • 2021-03-25
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 2022-12-08
    相关资源
    最近更新 更多