LINQ:比较列表A和B,如果在B中,则选择A中的项目

时间:2015-06-10 16:22:39

标签: c# linq

我有一个标签列表(列表A),以及与主题匹配的标签列表(列表B)。我想解析列表B中的所有项目,如果它在那里,让它选择列表A中的项目。我已经尝试做两行和一行语句来做到这一点,但我遇到了同样的问题,无论如何我试试。这是我的一行代码尝试:

var tags = db.Tags.Where(x=>x.TagID == db.TagLink.Where(y => y.TopicID == incomingTopicID)).ToList();

列表A和B有一个标签ID的公共列。

有什么建议吗?

更新

db.TagLink的结构是以下列:TagLinkID(Key),TopicID,TagID。

db.Tags的结构是以下列:TagID,TagName,IsTagScored。

2 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题。这是一种方法:

var tags = db.Tags
    .Where(x=>db.TagLink
        .Any(y => y.TagId == x.TagId && y.TopicID == incomingTopicID))
    .ToList();

答案 1 :(得分:0)

您可以使用Join,如下所示:

var tags = db.TagLink.Where(x => x.TopicID == incomingTopicID)
                     .Join(db.Tag, x => x.TagId, y => y.TagId, (x, y) => y)
                     .ToList();