C# Null 与 LINQ 合并

标签 c# linq null-coalescing

我有 2 个类,如下所示:

class Widget
{
    string Selected { get; set; }

    List<Option> Options { get; set; }
}

class Option
{
    string InternalCode { get; set; }

    string ExternalCode { get; set; }
}

Options 为每个客户端动态填充不同的数据,以将 ExternalCode 显示为选项

Selected 填充有 ExternalCode

然后我需要访问匹配的 InternalCode

目前我是这样做的:

var option = widget.Options.SingleOrDefault(o => o.ExternalCode == widget.Selected);

var internalCode = option == null ? string.Empty : option.InternalCode;

是否可以使用使用 Null Coalesce 的单行?

最佳答案

是的,您可以使用 null 传播和 null 合并运算符,如果您可以使用 C# 6,这将满足您的需求:

var option = widget.Options
             .SingleOrDefault(o => o.ExternalCode == widget.Selected)?.InternalCode
             ?? string.Empty;

?. 将转换为您对 option == null ? 部分的使用。

关于C# Null 与 LINQ 合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34630920/

相关文章:

c# - 我的 clickonce 应用程序如何请求编辑注册表和主机文件的权限?

c# - 使用 ExpressionVisitor 排除连接中的软删除记录

javascript - JavaScript中有 "null coalescing"运算符吗?

c# - 向 SQL Server 发送空参数

c# - 如何传递具有可变数量参数的 Func<T>

c# - .NET 中是否有 "Void"结构的实际用途

c# - 列表控件 C#

c# - LINQ 问题...需要获取具有最小值的元素

c# - 无法使用 LINQ OrderBy 中的属性名称进行排序

c# - 使用空合并运算符进行比较