代码之家  ›  专栏  ›  技术社区  ›  Kiran Shahi Jonny

当Linq查询返回空值时,如何返回null?

  •  0
  • Kiran Shahi Jonny  · 技术社区  · 6 年前

    我有以下代码从列表中获取值。

    GetList().SingleOrDefault(x => x.Key == "MyKey").MyValue;
    

    如果有 Key 有价值的财产 MyKey 在一个列表中,它可以正常工作,但当没有 钥匙 有价值的财产 美奇钥匙 在一个列表中,它抛出了一个 NullReferenceException

    System.NullReferenceException
      HResult=0x80004003
      Message=Object reference not set to an instance of an object.
    
    3 回复  |  直到 6 年前
        1
  •  7
  •   Kiran Shahi Jonny    6 年前

    使用?。然后呢?[] null-conditional 操作员。它在执行成员访问(?)之前测试左侧操作数的值是否为null或索引(?)?[])操作;如果左侧操作数的计算结果为null,则返回null。

    GetList().SingleOrDefault(x => x.Key == "MyKey")?.MyValue;
    
        2
  •  1
  •   Prem    6 年前

    你可以使用下面的代码

    var result = GetList().SingleOrDefault(x => x.Key == "MyKey");
    if(result != null)
    {
      //Add your logic
    }
    
        3
  •  1
  •   Kalpesh Rajai    6 年前

    GetList().Where(x => x.Key == "MyKey").Select(S=>S.MyValue).SingleOrDefault();