4

エンティティフレームワーククエリからアクションを実行する前に、結果が返されたかどうかを確認しようとしています。コードを使用しようとしています:-

var shoppingCartSessions = from c in context.ShoppingCartSessions where c.UserId == gUserID select c;
if (shoppingCartSessions.First() != null)
{
}

ただし、エラーが発生します

シーケンスに要素が含まれていません

.Firstスタックをチェックしたところ、置き換えることができることがわかりましたが.FirstOrDefault、これが要素の存在をチェックする正しい方法であるかどうかをチェックしたかったのです。アイテムをフェッチしてからチェックするよりも良い方法はありますか?

4

2 に答える 2

9

使用Any()

var shoppingCartSessions = from c in context.ShoppingCartSessions 
                           where c.UserId == gUserID 
                           select c;
if (shoppingCartSessions.Any())
{
     //not empty
}
于 2012-07-08T15:32:17.087 に答える
7

チェックしてみましたか.Count() > 0

編集: Mahmoud Gamalが述べたように、を使用Any()すると、DBでCOUNT()ではなくEXISTSクエリが実行され、最終的に正確な量を気にしないため、パフォーマンスがわずかに向上するはずです。

于 2012-07-08T15:30:49.713 に答える