0

次のクエリを実行するための最適な方法は何ですか?

次の構造の2つのテーブルがあります。

DBテーブル

すべての「所有されていない」アセットを検索したいのですが、これは、AssetIDを持ち、EndDateまたはEndDateを将来持つAssetOwnerレコードがないことを意味します。

私はこのクエリで最初のパスを作成しました:

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

しかし、これについての経験が不足しているので、これがこのクエリを実行するための最適な方法であるかどうかを知りたいです(オプションが何であるかさえわかりません)。

乾杯、

ティム。

4

1 に答える 1

0

これまでのところかなり良い。試す

return from a in db.Assets
       where !(a.AssetOwners.Any(o => o.EndDate.HasValue || o.EndDate > DateTime.Now))
       select a;
于 2012-12-05T11:15:07.693 に答える