c# - 在 linq 上选择之前检查空值

标签 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?

最佳答案

Null propagation operator 是C# 6 新引入的。return dto?.Select... 意思是,如果dto 为null 那么这条语句将返回null else 将执行剩下的部分。 另一个例子,假设你有 Employee 对象和 Address 属性,它又有 Lane (string)、Pincode 等。 因此,如果您需要获取地址 channel 值,您可以这样做:

var lane = employee?.Address?.Lane;

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

这可以以多种方式组合,而且非常方便。 例如,

int someIntegerValue = someObject?.SomeIntValue ?? 0;

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

关于c# - 在 linq 上选择之前检查空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39054765/

相关文章:

c# - 实现两个不同类的相似方法的最佳方法?

.net - 错误 PRJ0019 : A tool returned an error code from "Copying DLL..."

c# - 用代码模仿 Windows 任务计划程序

c# - 使用 LINQ to DataTable 确定外键表是否与主键表有任何链接

c# - 与结构大小和性能相关的特殊结果

c# - 我的自定义值转换器导致 XAML 验证工具失败

c# - 与通用类型 Nhibernate 合并

c# - 分组并从列表中删除

c# - 当我们有多个名称相同但属性不同的元素时,如何使用 Xdocument 从 xml 中删除元素

c# - Linq to Entities 查询可空数据类型