如何相交两个不同的 IEnumerable 集合
我认为这个问题以前已经被问过,但我无法得出明确的答案。我试图找到交叉两个完全不同的可枚举集合的最佳方法(或方法)。
class A:
- int z1
- int z2
- int z3
- string z4
class B:
- int j5
- int j6
- T j7
- T j8
- string j9
..我想相交List 与
List
位于 z2 == j6
上。
这可以做到吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这个问题确实没有意义——结果类型是什么?必须对相同类型的两个序列执行交集。听起来您不太想要两个集合之间的交集,而是根据 z2 的可能值对第一个序列进行过滤。例如:
或者可能正如 Gabe 所建议的那样,您想要加入。例如:
这将为您提供两个列表中在 z2/j6 上匹配的所有值对。
The question doesn't really make sense - what would the result type be? Intersections have to be performed on two sequences of the same type. It sounds like you don't so much want an intersection between two sets, as a filter of the first sequence based on possible values of z2. For example:
Or possibly as Gabe suggests, you want a join. For example:
That will give you all pairings of values from the two lists which match on z2/j6.
您需要实现自定义相等比较器(请参阅
IEqualityComparer> 接口),以将其作为第二个参数传递给
Intersect()
。You need to implement a custom equality comparer (see
IEqualityComparer<T
> interface) to pass it as a second argument toIntersect()
.通过使用 intersect 方法,您可以获得两个可枚举之间的公共成员,如以下示例所示:
By using the intersect method, you can get common members between the two enumerables, like this example demonstrates: