查找并更改列表中符合要求的第一个元素的值,如果找不到,请执行其他操作
本文关键字:如果 找不到 操作 其他 执行 元素 第一个 列表 查找 | 更新日期: 2023-09-27 18:04:46
这似乎简单得离谱,但我似乎找不到方法。基本上是标题,我想在列表中找到符合要求的第一个项目,并修改找到的项目的值,如果该列表中没有符合要求的项目,则做其他事情。
我使用了前臂循环,但这绝对不是最快的方法。
foreach (CustomClass foo in bar)
{
if (!foo.Value)
{
foo.Value = true;
currentCount++;
break;
}
}
然后,我尝试使用List.First()
,并在它找不到值时捕获异常,但速度要慢得多,我正在寻找性能。
EDIT:不要介意下面的内容,我发现了如何使第一个或默认值起作用,但有比foreach方法更快的方法多次做到这一点吗?感谢
所以我尝试了FirstOrDefault,但我一直得到空引用异常
if (bar.FirstOrDefault(c => c.Value == false).Equals(null))
{
break;
}
else
{
thePicture.FirstOrDefault(c => c.Value == false).Value = true;
currentCount++;
}
有人知道如何使第一个或默认工作吗?或者有没有其他比foreach方法更快的方法(这将在另一个循环中运行很多次(谢谢!
FirstOrDefault
将在未找到元素的情况下返回一个null引用——假设元素类型为引用类型。不要对结果调用Equals
,只需使用==
。。。不要叫两次:
var first = bar.FirstOrDefault(c => !c.Value);
if (first == null)
{
...
}
else
{
// Use first, I suspect.
// (You don't in the sample code, but...)
}
请注意,这不会比适当的foreach
循环快,但它可能更可读。
(bar!=null)?((bar[1].value == true)?(do something):(do something)):do something)
这里您只检查列表中的第一个元素,对吗?那为什么要绕圈呢。