我有一个包含某些对象的Id属性的List。 我有一个List,我需要一个新的List,但只有在List中具有Id匹配的对象。
如何以最佳性能执行此操作?
答案 0 :(得分:2)
使用linq:
List<MyClass> results = mylist.FindAll(x => listOfIds.Contains(x.ID));
或者如果listOfIds
有很多记录:
HashSet<int> hashedIds = new HashSet<int>(listOfIds);
List<MyClass> results = mylist.FindAll(x => hashedIds.Contains(x.ID));
在HashSet<T>
中查找ID比List<T>
如果您需要逐个枚举项目,那么:
IEnumerable<MyClass> results = mylist.Where(x => listOfIds.Contains(x.ID));
foreach(MyClass item in results)
{
// do your work
}