2011-01-11 5 views
0

返される結果がない場合を除いて、次のLINQクエリは正常に動作します。次に、InvalidOperationExceptionがスローされます。LINQクエリから返された結果をどのように処理しませんか?

これを処理する最善の方法は何ですか?どのように結果の存在をテストし、存在しない場合は移動するのですか?私はtry-catchについて考えましたが、より洗練されたソリューションが必要であると感じました。

この例では、最初の結果のIdだけを期待しています。私はオブジェクト全体を返す必要がある場合があります。

var drId = dcDest.drs.Where(dr => dr.ContactID == contactId) 
         .Select(dr => dr.Id).First(); 

int xId = drId; 

答えて

3

SingleOrDefault()を使用してください。

FirstOrDefault()実際には、 'SingleOrDefault()'をより適切な選択にするコレクション内に1つしかなければならないと言っています(2つ以上ある場合は例外がスローされます)。

一方、シーケンスが必要であるが、要素が返されない場合には大文字小文字を処理する必要がある場合は、シーケンスが空の場合にDefaultIfEmpty()を使用してデフォルト値を返すこともできます。 http://msdn.microsoft.com/en-us/library/bb355419.aspx

何が欲しいのですか?ゼロのIDか他の何か?

+0

返品が空の場合、血清のIDは正常です。 – DenaliHardtail

関連する問題