假设我有一个集合,称它为ids
它的类型是 IEnumerable<string>
,我有第二个收藏,称之为 objects
它的类型是 MyObject[]
. MyObject
有一个名为 id
的字符串属性.我想要一个返回 objects
中所有对象的 LINQ 语句收藏谁id
匹配 ids
中的任何值收藏。 ids
将是 objects.Select(x => x.id)
的严格子集.意思是,对于 ids
中的每个字符串我知道会有一个对应的 MyObject
在objects
.有人可以发布纯 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/