使用linq查找出现在两个列表中的项目

时间:2018-11-10 09:29:33

标签: asp.net linq

我正在尝试查找出现在2个列表中的项目。我已经找到了使用简单列表的现有示例,但它们似乎并不是我所需要的。

这是一个配对的例子:

List<SiloNode> NodeList = new List<SiloNode>();

public class SiloNode
{
    public List<string> Groups;
}

NodeList SiloNode 的列表,每个项目都包含 Groups 中的字符串列表。

首先,我从 NodeList 中提取一个代表当前页面的节点,所以我有了这个:

SiloNode currentNode = // code to get this node 

因此,现在有了当前节点,我想在 NodesList 中找到包含 currentNode.Groups 中任何组项目的所有其他节点。

我已经看过使用.Contains和.Any的示例,但是这些仅演示了比较简单属性(例如string或int),到目前为止,我还没有提出正确的语法。

例如,下面的代码仅允许我与单个字符串进行比较:

public static IEnumerable<SiloNode> GroupMembers(this SiloNode currentNode)
{
    return NodeList.Where(x => currentNode.Groups.Contains(x.Key));
}

有人可以帮助我到达我需要的地方吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Intersect扩展方法

return NodeList.Where(x =>  x.Groups.intersect(current.Groups).Any());