Как перевести запрос SQL в LINQ - PullRequest
0 голосов
/ 21 марта 2020

Как перевести запрос 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

1 Ответ

2 голосов
/ 22 марта 2020

Во-первых, Вы должны заметить, использовать 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

Во-вторых , Вы можете перейти с 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...