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

发布于 2024-12-11 18:15:15 字数 197 浏览 0 评论 0原文

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

例如:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

舟遥客 2024-12-18 18:15:15

使用 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进行更改; 稍后到其他集合,无需更改您的代码。

Either use Find once and compare the result with default(T), or if default(T) could be the item itself, use FindIndex and check whether the index is -1:

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

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:

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

Using LINQ will let you change from List<T> to other collections later on without changing your code.

等你爱我 2024-12-18 18:15:15
item = list.Find(item => item == ...);
if(null != item)
{
   //do whatever you want
}
item = list.Find(item => item == ...);
if(null != item)
{
   //do whatever you want
}
空心↖ 2024-12-18 18:15:15

您可以使用 linq 简单地完成此操作,只需在命名空间顶部添加 using System.Linq 即可;

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

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

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

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

您可以设置自己的标准,而不是 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:

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

Or if you just want first result;

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

instead of item.Id == givenID you can put your own criteria. for example if item is string you can do item == "Test" or if is int do item == 5, ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文