使用 LINQ 比较两个列表的更好方法?
我有 2 个集合:
IEnumerable<Element> allElements
List<ElementId> someElements,
一起执行以下操作的简洁方法是什么:
[1] 验证 someElements
中的所有元素是否存在于 allElements
中,当条件失败时快速返回。
[2] 获取
ListElement
对象列表。 someElements 映射到。
每个 Element
对象都有一个 ElementId
谢谢。
I have the 2 collections:
IEnumerable<Element> allElements
List<ElementId> someElements,
What is a concise way of doing the following together:
[1] Verifying that all elements in someElements
exist in allElements
, return quickly when condition fails.
and
[2] Obtain a list of Element
objects that List<ElementId> someElements
maps to.
Every Element
object has an ElementId
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我会这样做:
请注意,如果
allElements
中有任何重复项,第一行将引发异常。I would do this:
Note that the first line will throw an exception if there are any duplicates in
allElements
.someElements.All(e => allElements.Contains(e));
allElements.Where(e => someElements.Contains(e.ElementId));
someElements.All(e => allElements.Contains(e));
allElements.Where(e => someElements.Contains(e.ElementId));
不如 Skeet 答案那么有效,但对于合理大小的集合来说已经足够了:
Not as efficient as the Skeet answer, but good enough for reasonable-sized collections: