将 LINQ let 与 null return 值一起使用

Use LINQ let with null return values

我正在尝试在 LINQ 中执行一个方法

var result = from fruit in fruits
             let type = GetType(fruit)
             select new {
                 fruit = fruit,
                 type = type != null ? type.Name : "N/A"
             };

FruitType GetType(Fruit fruit)
{
    if (fruit == a)
      return TypeA;
    else 
      return null;
}

这会引发错误,因为:如果 resultnulllet 不允许访问 type.Name,即使它在 [=16= 之后] 检查。

有什么解决方法吗?

为什么不直接 return 一个默认值而不是 null?

FruitType GetType(Fruit fruit)
{
    if(fruit == a)
        return TypeA;
    return new FruitType {Name = "N/A"};
}

那么您的查询就变成了...

var result = from fruit in fruits
             let type = Gettype(fruit)
             select new {
                 fruit = fruit,
                 type = type.Name
             };