在使用之前检查通用列表中的项目

时间:2011-10-25 19:14:57

标签: c# linq list

使用通用List,检查具有特定条件的项是否存在的最快方法是什么,如果存在,选择它,而不在列表中搜索两次:

例如:

if (list.Exists(item => item == ...))
{
    item = list.Find(item => item == ...)
    ....
}

3 个答案:

答案 0 :(得分:5)

使用Find一次并将结果与​​default(T)进行比较,或者如果default(T)可能是项目本身,请使用FindIndex并检查索引是否为-1:

int index = list.FindIndex(x => x...);
if (index != -1)
{
    var item = list[index];
    // ...
}

如果您使用的是.NET 3.5或更高版本,那么使用LINQ会更加惯用 - 再次,如果default(T)不是问题,您可以使用以下内容:

var item = list.FirstOrDefault(x => x....);
if (item != null)
{
    ...
}

使用LINQ可以让您稍后从List<T>更改为其他集合而无需更改代码。

答案 1 :(得分:5)

item = list.Find(item => item == ...);
if(null != item)
{
   //do whatever you want
}

答案 2 :(得分:3)

您只需使用linq即可,只需在命名空间顶部使用System.Linq添加;

首先,如果你想获得所有结果:

var items = list.Where(item=>item.Id == giveID).ToList();

或者如果您只想要第一个结果;

var result = list.FirstOrDefault(item=>item.ID == givenID);

而不是item.Id == givenID您可以自己设定标准。例如,如果item是字符串,你可以item == "Test"或者如果是int item == 5,...

相关问题