1

FirstOrDefaultクエリの後に使用するクエリを作成していますOrderBy。クエリは、最初にnullでないかどうかを確認してから、データを使用する必要があります。このように書くよりも良い方法はありますか?

int count = db.Items.Count(i => 
          i.Assignments.OrderByDescending(a => 
                a.DateAssigned).FirstOrDefault() != null
          && 
          i.Assignments.OrderByDescending(a =>
                a.DateAssigned).FirstOrDefault().DateReturned == null)

このコードが行うことは、多くの割り当てがあるアイテムがあることです。日付ごとに最新の割り当てを取得し、それが存在するかどうかを確認してから、プロパティ(DateReturned)で条件を実行します。ご覧のとおり、このクエリは長く、ほとんどのクエリは次のように見えます。最初にnullをチェックしてから、プロパティを使用して2番目のクエリを実行します。これを行うためのより良い方法はありますか?

4

3 に答える 3

8

電話.Any(a => a.DateReturned == null)して、条件を満たすアイテムがあるかどうかを確認してください。

最新の割り当てのみを確認する場合は、の.Take(1)前に追加し.Any()ます。

于 2012-08-23T17:07:51.403 に答える
1

私の見解:

int count = 
itemsQuery.Select(i => i.Assignments.OrderByDescending(a => a.DateAssigned))
          .Count(i => i.FirstOrDefault() != null &&  
                      i.First().DateReturned == null);
于 2012-08-23T17:12:06.040 に答える
0

結果を変数に入れて、同じことを2回行わないようにすることができます。

int count = itemsQuery.Count(i => {
  var f = i.Assignments.OrderByDescending(a => a.DateAssigned).FirstOrDefault();
  return f != null && f.DateReturned == null;
});
于 2012-08-23T17:13:53.357 に答える