2010-05-21 209 views
5

我有可能會或可能不會有question_groupLinq中的使用DefaultIfEmpty - 問題的默認值代入空值

如果所有的問題沒有question_group問題,如果是空的這樣我使用默認:

question_group defaultQuestion = new question_group {question_group_id = Guid.Empty}; 
questions.Select(x => x.question_group).DefaultIfEmpty(defaultQuestion).Distinct(); 

我不應該得到IEnumerable<question_group>只包含我定義的默認question_group?我得到null ....我在這裏想念什麼?

回答

6

我認爲DefaultIfEmpty的工作方式與您的期望不同。如果你的問題沒有問題組,可能這意味着它的問題組爲空。 DefaultIfEmpty僅影響枚舉(即元素數爲零)。包含一些空值的枚舉不是空的。

我認爲你可能想要做的是刪除所有空的問題組,然後檢查該枚舉是否爲空。你可能想嘗試這樣的代替:

var questionGroups = questions.Select(x => x.question_group) 
           .Where(x => x != null) 
           .DefaultIfEmpty(defaultQuestion) 
           .Distinct(); 
+0

謝謝!這就是我所錯過的。 – FiveTools 2010-05-21 18:14:30