从List <t>获取列表<t>,其中包含List <int>中的参数匹配

时间:2016-07-04 12:09:29

标签: c#

我有一个包含某些对象的Id属性的List。 我有一个List,我需要一个新的List,但只有在List中具有Id匹配的对象。

如何以最佳性能执行此操作?

1 个答案:

答案 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
}