代码之家  ›  专栏  ›  技术社区  ›  Kurt Schelfthout

Linq to sql:可能为null的属性的属性

  •  3
  • Kurt Schelfthout  · 技术社区  · 17 年前

    简单LINQ查询:

    from transport in db.Transports
     select new
     {
        Current = transport.CurrentLocation,
        CurrentCarriers = transport.CurrentLocation.Carriers,
      };
    

    问题: CurrentLocation 可能为空。如果是,执行此查询将抛出一个NullReference。我试着加一张支票,比如

    transport.CurrentLocation == null ? null : transport.CurrentLocation.Carriers
    

    有没有不需要为每次传输发送额外查询的好解决方案?

    3 回复  |  直到 17 年前
        1
  •  3
  •   leppie    17 年前

    我通常只使用“let”。

    from x in Foo
    let y = x.Bar
    where y != null
    select y.Baz;
    

    更新:

    我觉得这个??运算符不会转换为SQL。

        2
  •  3
  •   Bobby Ketchum    17 年前

    如果Transports上的外键可为null,则必须先检查该列是否为null,然后才能尝试获取CurrentLocation对象。

    你可以这样做:

    CurrentLocation = transport.currentLocationId != null ? transport.CurrentLocation : null;
    
        3
  •  1
  •   eglasius    17 年前

    这很奇怪,我使用了一些非常复杂的查询,但没有遇到这个问题。我刚查了一张,没关系,但我的支票倒了:

    您能否发布您尝试的完整查询,该查询会给出解析异常?