C#:在 FirstOrDefault 之后设置属性的最短方法

问题描述 投票:0回答:1

鉴于:

request.Order type is ColumnName[]?

我正在尝试编写一行代码,相当于下一个不正确代码:

request.Order.FirstOrDefault(x => x.Name == "From").Name = "FromDate";

我需要做的是将 ColumnName 中的“From”替换为“FromDate”,其中 Name =“From”,only 如果存在(FirstOrDefault 不为空)。

给定的代码显然是不正确的,因为在FirstOrDefault为空的情况下,.Name会抛出异常。

我试图避免多行代码或嵌套的 if。

换句话说,我正在尝试替换:

var from = request.Order.FirstOrDefault(x => x.Name == "From");
if (from is not null) 
{
    from.Name = "FromDate";
}

通过一行代码。

我正在使用.Net 8

有什么建议吗?

c# .net lambda null
1个回答
0
投票
if (request.Order.FirstOrDefault(x => x.Name == "From") is { } order)
{
    order.Name = "FromDate";
}

稍微神秘的

{ }
是一个属性模式,它匹配任何非空对象,即空测试。相对于
is not null
模式的优点是您可以将对象分配给变量
order

© www.soinside.com 2019 - 2024. All rights reserved.