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