c# - 将包含不同类型的两个集合相交

标签 c# .net linq

假设我有一个集合,称它为ids它的类型是 IEnumerable<string> ,我有第二个收藏,称之为 objects它的类型是 MyObject[] . MyObject有一个名为 id 的字符串属性.我想要一个返回 objects 中所有对象的 LINQ 语句收藏谁id匹配 ids 中的任何值收藏。 ids将是 objects.Select(x => x.id) 的严格子集.意思是,对于 ids 中的每个字符串我知道会有一个对应的 MyObjectobjects .有人可以发布纯 LINQ 解决方案吗?我已经尝试了几件事但没有运气。我可以很容易地提出一个迭代解决方案,所以除非仅使用 LINQ 是不可能的,否则请不要发布任何内容。

最佳答案

“只是”LINQ:

var r = obj.Where(o => ids.Any(id => id == o.id));

但更好的是,对于更大的 n,有一个集合:

var hs = new HashSet(ids);
var r = obj.Where(o => hs.Contains(o.id));

关于c# - 将包含不同类型的两个集合相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602688/

相关文章:

.net - 在 ASP.Net 中设计网站 - 用户登录设计和注意事项

c# - XNA RenderTarget 保留内容

c# - Linq 返回具有与单独列表中的所有项目匹配的子项目的父对象

c# - 查询 XML 以提取一条记录并将数据绑定(bind)到各个文本 block

c# - 替换(在模式末尾解析 "\"非法)

c# - 输入第四位数字时引发文本框事件

c# - WP7邮件客户端是否使用ActiveSync

asp.net-mvc - 当使用许多 1 :Many or Many:Many tables? 时,存储库是什么样的

c# - 如何将图像从 C# 发送到正确接受 OpenCV Mat 的 DLL?

c# - 在 asp.net 中检查是否所有复选框都被选中 == false