给定
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
有什么建议吗?
if (request.Order.FirstOrDefault(x => x.Name == "From") is { } order)
{
order.Name = "FromDate";
}
稍微神秘的
{ }
是一个属性模式,它匹配任何非空对象,即空测试。 (另一种选择是is ColumnName order
)。相对于 is not null
模式的优点是您可以将对象分配给变量 order
。
request.Order.FirstOrDefault(x => x.Name == "From")?.Name = "FromDate";