首页 > 解决方案 > 检查列表中是否存在项目并将值推送到其中 - 一次性

问题描述

我想检查列表中是否存在项目,如果存在,则将其推入一个值。

所有这一切,都是为了避免在列表上运行两次。

因为如果我做这样的事情:

if (Params.Any(p => p.Name == "Phone"))
    Params.Where(p => p.Name == "Phone").First().Value = phoneValue

我在名单上跑了两次。第一次在 中any,第二次在 中where

所以实际上我想一次性完成以上两条线。

是否可以?

标签: c#linq

解决方案


你可以使用FirstOrDefault如下:

var result = Params.FirstOrDefault(p => p.Name == "Phone"); 

然后检查该值是否不为空,然后设置属性:

if(result != null) result.Value = phoneValue;

这样您就不必在源上枚举两次。


推荐阅读