如果列表包含元素,则使用linq谓词进行操作



我的问题是,如果linq操作的结果有任何值,我该如何操作:

简单模型类:

public class Model{
public string property;
public void someOperation(){}
}
下面是一个简单的主方法:
List<Model> list...  //supose it has some model objects.

list.Where(x=> x.property=="valueNotInTheList").First().someOperation(); //will be a exception
list.Where(x=> x.property=="valueNotInTheList").FirstOrDefault().someOperation(); //will be a exception

我的问题是,有没有一种方法像空操作符?或者只有当列表包含相同linq操作中的元素时才执行操作。事实上,我只需要在一个linq操作中执行这样的操作:

if(list.Any(x=>x.property=="valueNotInTheList")){
list.Where(x=> x.property=="valueNotInTheList").First().someOperation()
}

谢谢!

您可以尝试在条件不满足任何项目时返回default(在您的情况下null)值的FirstOrDefault。然后保持null(在这种情况下什么都不做),你可以把?.操作符而不是.:

list
.FirstOrDefault(x => x.property == "valueNotInTheList")
?.someOperation();

最新更新