有两个集合:
NodesWithCircuitsDown<NetworkDeviceNodeStatus>
和RecordedImpairedNodes<NetworkDeviceNodeStatus>
.
NetworkDeviceNodeStatus
有一个NodeId
(int) 和 CurrentStatus
(枚举)。
我想创建第三个集合,名为 NodesWithDifferentImpairment
,将包含任何 NetworkDeviceNodeStatus
与 NodeId
位于上述两个集合中,但带有 CurrentStatus
这是不同的。
下面是我到目前为止所拥有的,但我在嵌套查询来完成此任务时遇到了困难。
IEnumerable<NetworkDeviceNodeStatus> NodesWithDifferentImpairment =
NodesWithCircuitsDown.Where(x =>
RecordedImpairedNodes.Select(y => new { y.CurrentStatus, y.NodeId }).Select(y => y.NodeId)
);
最佳答案
试试这个
NodesWithCircuitsDown.Join(RecordedImpairedNodes,
node => node.NodeId,
node => node.NodeId,
(leftNode, rightNode) => new { LeftNode = leftNode, RightNode = rightNode }).
Where(pair => pair.LeftNode.CurrentStatus != pair.RightNode.CurrentStatus);
通过在 NodeId 属性上连接两个集合、提取对并过滤具有不同状态的节点来获取具有不同状态的节点对。
关于c# - LINQ 比较两个集合的多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337622/