假设我有一个集合,称之为ids类型IEnumerable<string>,我有第二个集合称它为objects类型MyObject[].MyObject有一个名为的字符串属性id.我想要一个LINQ语句,它返回集合中与objects集合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));
Run Code Online (Sandbox Code Playgroud)
但更好的是,对于较大的n,有一组:
var hs = new HashSet(ids);
var r = obj.Where(o => hs.Contains(o.id));
Run Code Online (Sandbox Code Playgroud)
我认为这对于查询语法来说非常简单。它看起来像:
var a = from o in objects
join i in ids on o.id equals i
select o;
Run Code Online (Sandbox Code Playgroud)