gpt4 book ai didi

c# - 在单个 LINQ 表达式中嵌入 null 测试

转载 作者:太空狗 更新时间:2023-10-30 00:00:22 24 4
gpt4 key购买 nike

让我们从一个简单的示例类开始:

public class Foo
{
public DateTime Date { get; set; }
public decimal Price { get; set; }
}

然后创建一个列表:

List<Foo> foos = new List<Foo>;

我想根据日期返回列表中某一项的格式化价格或“N/A”,例如我可以这样写:

Foo foo = foos.FirstOrDefault(f => f.Date == DateTime.Today);
string s = (foo != null) ? foo.Price.ToString("0.00") : "N/A";

我想将上面的两行合并如下:

string s = foos.FirstOrDefault(f => f.Date == DateTime.Today).Price.ToString("0.00") ?? "N/A";

但是,这并没有达到我想要的效果,因为如果 (f => f.Date == DateTime.Today) 没有返回 Foo,那么 NullReferenceException 是抛出。

因此,是否可以使用 LINQ 创建仅 1 个语句来返回格式化价格或“N/A”?

最佳答案

如果先筛选再选择,则可以像这样使用空合并运算符 (??):

string price = foos.Where(f => f.Date == DateTime.Today)
.Select(f => f.Price.ToString())
.FirstOrDefault() ?? "N/A";

关于c# - 在单个 LINQ 表达式中嵌入 null 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7739484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com