使用前检查通用列表中的项目
使用通用列表,检查具有特定条件的项目是否存在以及如果存在则选择它,而无需在列表中搜索两次的最快方法是什么:
例如:
if (list.Exists(item => item == ...))
{
item = list.Find(item => item == ...)
....
}
With a generic List, what is the quickest way to check if an item with a certain condition exists, and if it exist, select it, without searching twice through the list:
For Example:
if (list.Exists(item => item == ...))
{
item = list.Find(item => item == ...)
....
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
Find
一次并将结果与default(T)
进行比较,或者如果default(T)
可能是项目本身,则使用FindIndex
并检查索引是否为-1:如果您使用的是.NET 3.5 或更高版本,使用 LINQ 更为惯用 - 同样,如果
default(T)
不是问题,您可以使用类似以下内容:使用 LINQ 将让您从
List进行更改;
稍后到其他集合,无需更改您的代码。Either use
Find
once and compare the result withdefault(T)
, or ifdefault(T)
could be the item itself, useFindIndex
and check whether the index is -1:If you're using .NET 3.5 or higher, it's more idiomatic to use LINQ - again, if
default(T)
isn't a problem, you could use something like:Using LINQ will let you change from
List<T>
to other collections later on without changing your code.您可以使用 linq 简单地完成此操作,只需在命名空间顶部添加 using System.Linq 即可;
首先,如果你想获得所有结果:
或者如果你只想要第一个结果;
您可以设置自己的标准,而不是
item.Id ==给定ID
。例如,如果 item 是字符串,则可以执行item == "Test"
或如果是 int 则执行item == 5
, ...You can do it simply with linq, just add using
System.Linq
in top of your namespace;First if you want to get all results:
Or if you just want first result;
instead of
item.Id == givenID
you can put your own criteria. for example if item is string you can doitem == "Test"
or if is int doitem == 5
, ...