C# 如何将SQL查询转换为LINQ
如何将SQL查询转换为LINQC# 如何将SQL查询转换为LINQ,c#,sql,linq,C#,Sql,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 首先,
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
首先,您应该注意使用
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;
首先,您应该注意使用
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;