SQL到LINQ转换查询具有多个group by和count

时间:2018-02-02 07:00:04

标签: sql linq sql-to-linq-conversion

请提供以下SQL查询转换为LINQ

SQL Query converted to LINQ Query :

以下SQL查询的LINQ转换所需的SQL

        select COUNT(rg.TagId), t.Name, r.Id,r.Name from ResourcesTag rg
        inner join Tag t on rg.TagId = t.Id
        inner join Resources r on rg.ResourceId =r.Id
        group by rg.TagId,t.Name,r.Id,r.Name
        order by COUNT(rg.TagId) desc

1 个答案:

答案 0 :(得分:0)

将SQL转换为LINQ查询理解:

  1. 将FROM子选项转换为单独声明的变量。
  2. 以LINQ子句顺序翻译每个子句,将monadic运算符(DISTINCT,TOP等)转换为应用于整个LINQ查询的函数。
  3. 使用表别名作为范围变量。使用列别名作为匿名类型字段名称。
  4. 对多列使用匿名类型(new {})
  5. 使用into join_variable模拟左连接,然后从连接变量后跟.DefaultIfEmpty()进行另一次连接。
  6. 将COALESCE替换为条件运算符和空值测试。
  7. IN翻译为.Contains(),将NOT IN翻译为!...Contains()
  8. SELECT *必须替换为select range_variable或者连接,一个包含所有范围变量的匿名对象。
  9. SELECT字段必须替换为select new {...},创建一个包含所有所需字段或表达式的匿名对象。
  10. 必须使用扩展方法处理正确的外部联接。