当前位置:  开发笔记 > 编程语言 > 正文

C#Null与LINQ合并

如何解决《C#Null与LINQ合并》经验,为你挑选了2个好方法。

我有2个类,看起来像这样:

class Widget
{
    string Selected { get; set; }

    List

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使用单行?



1> Patrick Hofm..:

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

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

?.将转化为您对option == null ?零件的使用.



2> Jon Skeet..:

当然,只需稍加改动:

var option = widget.Options
                   .Where(o => o.ExternalCode == widget.Selected)
                   .Select(o => o.InternalCode)
                   .FirstOrDefault() ?? "";

换句话说,项目匹配选项的内部代码序列,然后顺序采取先的那些,默认为null...它允许您使用空合并运算的结果.

您可以根据Patrick的答案使用空条件运算符,但我个人更喜欢这个答案中的代码 - 我认为它更容易理解.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有