LINQ查询相关表中不存在记录,或者与条件相关的表中存在记录

时间:2012-12-05 03:13:45

标签: linq-to-sql

执行以下查询的最佳方式是什么?

我有两个具有以下结构的表:

DB Tables

我想找到所有“无主”资产 - 这意味着没有AssetOwner记录,其中包含AssetID,以及将来没有EndDate或EndDate。

我已在此查询中首次传递:

return from a in db.Assets
       where !db.AssetOwners.Any(o => o.AssetID == a.ID 
                                      && (!o.EndDate.HasValue || o.EndDate > DateTime.Now))
       select a;

但鉴于我缺乏这方面的经验,我想知道这是否是执行此查询的最佳方式(我甚至不知道选项是什么)。

干杯,

1 个答案:

答案 0 :(得分:0)

到目前为止相当不错。尝试

return from a in db.Assets
       where !(a.AssetOwners.Any(o => o.EndDate.HasValue || o.EndDate > DateTime.Now))
       select a;