比较两个列表与LINQ的更好方法?

Had*_*adi 1 c# linq custom-lists

我有2个收藏:

IEnumerable<Element> allElements
List<ElementId> someElements, 
Run Code Online (Sandbox Code Playgroud)

一起完成以下操作的简洁方法是什么:

[1]验证someElements存在的所有元素,allElements当条件失败时快速返回.

[2]获取映射到的Element对象列表List<ElementId> someElements.

每个Element对象都有一个ElementId

谢谢.

Jon*_*eet 9

我会这样做:

var map = allElements.ToDictionary(x => x.Id);    
if (!someElements.All(id => map.ContainsKey(id))
{
    // Return early
}
var list = someElements.Select(x => map[x])
                       .ToList();
Run Code Online (Sandbox Code Playgroud)

请注意,如果有任何重复项,第一行将抛出异常allElements.