简体   繁体   English

如何将 SQL 查询转换为 LINQ

[英]How to translate an SQL query to LINQ

How to translate an SQL query to LINQ如何将 SQL 查询转换为 LINQ

SELECT DISTINCT q.Id
FROM Questions AS q
    JOIN TagsQuestions AS tq
        ON q.Id = tq.QuestionForeignKey
    JOIN Tags AS t
        ON t.Id = tq.TagForeignKey 
WHERE t.Name IN ('C#', '.Net')
GROUP BY q.Id
HAVING COUNT(*) = 2

Firstly, You should note use DISTINCT q.Id because it's already GROUP BY q.Id .首先,您应该注意使用DISTINCT q.Id因为它已经是GROUP BY q.Id

SELECT q.Id
FROM Questions AS q
    JOIN TagsQuestions AS tq ON q.Id = tq.QuestionForeignKey
    JOIN Tags AS t ON t.Id = tq.TagForeignKey 
WHERE t.Name IN ('C#', '.Net')
GROUP BY q.Id
HAVING COUNT(*) = 2

Secondly , You can transfer from sql to linq syntax like below其次,您可以将 sql 转换为 linq 语法,如下所示

var TagNames = new[] {
    "C#",
    ".Net"
};

var result = from q in Questions
      join tq in TagsQuestions on q.Id equals tq.QuestionForeignKey
      join t in Tags on t.Id equals tq.TagForeignKey
         where TagNames.Contains(t.Name)
      group q by q.Id into g
         where g.Count() = 2
      select g.Key;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM