如何在多对多表上创建LINQ语句?

时间:2016-05-29 19:55:33

标签: c# asp.net-mvc entity-framework linq

我有2个表:(书,标签)它们之间的关系是多对多。

图书表包含ID,名称,版本....

标记表包含ID,名称。

由于许多EF关系创建的关系自动创建另一个名为:

的表

TagBooks 它拥有两个表的ID。

我希望从TagBooks表中获取标签id = 80的所有书籍,但我不知道该怎么做..

我试过这个,但由于我做得不对,我只得到了一个结果:

var result = db.Books.Where(p => p.Tags.Any(s => s.Id == id)).ToList();

1 个答案:

答案 0 :(得分:2)

首先找到标签然后获取该标签的书籍可能更容易

var result =
    db.Tags
      .Where(t => t.Id == id)
      .SelectMany(t => t.Books)
      .ToList();

虽然我不确定为什么你的原始尝试对你不起作用