FirstOrDefault 之后设置属性的最短方法

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

给定

request.Order
类型为
ColumnName[]
。我正在尝试编写一行代码,相当于这个不正确代码:

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

我需要做的是在

From
中将
FromDate
替换为
ColumnName
,其中
Name = "From"
,仅当它存在时(
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 linq lambda null
2个回答
3
投票
if (request.Order.FirstOrDefault(x => x.Name == "From") is { } order)
{
    order.Name = "FromDate";
}

稍微神秘的

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


-1
投票
request.Order.FirstOrDefault(x => x.Name == "From")?.Name = "FromDate";
© www.soinside.com 2019 - 2024. All rights reserved.