我有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使用单行?
是的,您可以使用null传播和null合并运算符,如果您可以使用C#6,则可以满足您的需求:
var option = widget.Options .SingleOrDefault(o => o.ExternalCode == widget.Selected)?.InternalCode ?? string.Empty;
这?.
将转化为您对option == null ?
零件的使用.
当然,只需稍加改动:
var option = widget.Options .Where(o => o.ExternalCode == widget.Selected) .Select(o => o.InternalCode) .FirstOrDefault() ?? "";
换句话说,项目匹配选项的内部代码序列,然后顺序采取先的那些,默认为null
...它允许您使用空合并运算的结果.
您可以根据Patrick的答案使用空条件运算符,但我个人更喜欢这个答案中的代码 - 我认为它更容易理解.