使用通用List,检查具有特定条件的项是否存在的最快方法是什么,如果存在,选择它,而不在列表中搜索两次:
例如:
if (list.Exists(item => item == ...))
{
item = list.Find(item => item == ...)
....
}
答案 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
,...