最有效的多对多Linq查询

时间:2012-06-24 19:46:59

标签: sql-server linq linq-to-sql many-to-many

我有以下设置:

表:问题

  • QuestionId

表:QuestionTag

  • QuestionId
  • TAGID

表:标签

  • TAGID
  • 标签名

一个问题可以有很多标签,一个标签可以有很多问题(多对多)

我正在使用LingToSql。我正在尝试创建一个基于方法的查询,它允许我传入一个标签名称列表并返回所有这些标签的问题。我只是不能缝合我的脑袋如何做到这一点。

有人能够使用基于方法的Linq查询向我展示如何执行此操作的示例吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

List<string> tagNames = ...;
var questions = db.Questions.Where(
     q => q.QuestionTags.Any(
          qt => tagNames.Contains(qt.Name)));

理解这一点的难点在于操作员的深层嵌套。过了一会儿就变得很自然了。