在linq上选择之前检查null

时间:2016-08-20 13:38:09

标签: c# .net linq

我刚刚安装了ReSharper,它已经改变了

if(dto != null)
{
    return new test{
     obj1 = "",
     obj2 = "",
 }
}

 return dto?.Select(item => new test
      {
    return new test{
     obj1 = "",
     obj2 = "",
 }

我以前没见过

dto?.Select

尝试谷歌的意思没有运气..有人可以请解释,或指出我正确的方向去除

我收集它只是检查null?

2 个答案:

答案 0 :(得分:3)

在C#6中新引入了Null传播运算符。返回dto?.Select ...表示,如果dto为null,则此语句将返回null,否则将执行剩余部分。 另一个例子,只是弥补它,假设你有一个带有Address属性的Employee对象,其中inturn有Lane(字符串),Pincode等。 因此,如果您需要获取地址通道值,您可以这样做:

var lane = employee?.Address?.Lane;

如果员工或地址为空,则返回null;否则返回车道值。

这可以通过多种方式结合起来,非常方便。 例如,

int someIntegerValue = someObject?.SomeIntValue ?? 0;

基本上,您可以使用此功能避免许多空检查。

答案 1 :(得分:1)

问号运算符作用于可空值和

x?<operation>

转换为

x.HasValue ? x.Value.<operation> : null

它基本上是说&#34;如果我不是空的话,那就去做;否则让我为null&#34;。

你有

吗?
return null

后面的原始代码声明?我很惊讶ReSharper会在转换中假设返回null。