2009-06-03 14 views
31

をチェックしたい、私は次のような問題があります。シーケンスに要素の誤りが含まれていないが、私はヌル

public Boolean Exists(String userName) 
{ 
    IRepository<User> = new UserRepository(); 
    User user = userRepository.First(u => u.Name == userName); 

    if (user == null) return false; 

    // Exists! 
    return true; 
} 

問題は、私がnullのUserオブジェクトを確認することができないことを、今あります。私がそこに着く前に、InvalidOperationExceptionには ""という要素が含まれています。 "

これは私には本当に変わっているようです。特に、制御フローを例外(例:try..catchでカプセル化し、それぞれの部分でtrue/falseを返します)を確立したくないからです。

ここでは何が起こっていますか?私が探している要素は、(など、ユーザーが検索された)が存在するときちなみに私のレポジトリ(ヒント?!)

に何か問題があり、これは正常ですかで、このコードは完璧に動作します。一致がない場合にのみ動作します。

答えて

60

Firstの代わりにFirstOrDefaultを使用します。これは、空のコレクションの面でnullを返します。

IRepository<User> = new UserRepository(); 
User user = userRepository.FirstOrDefault(u => u.Name == userName); 
+1

@Tomasを防ぐために、私は実際にあなたの前に入ったが、私はポストの回答編集が実際のサンプルコードが含まれるようになりました。 2回目の編集は2秒遅れだった:) – JaredPar

+0

Thats true J​​aredが最初に入った:D(2秒後にJaredが48秒前に、Tomasが46秒前に表示されていた)。 ありがとうございます。 – Alex

+0

+1 nananaboobooコメント:D – Gent

22

.FirstOrDefault().First()を変更してみてください。

12

使用.FirstOrDefault()そのエラーに

関連する問題