2010-05-21 3 views
5

Ich habe Fragen, die keine question_groupMit DefaultIfEmpty in Linq - Problem einen Nullwert für einen Standardwert ersetzt

alle haben können oder wenn die Fragen und keine question_group, wenn ich verwende Standards wie diese leer, wenn :

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

sollte ich die Standard-question_group eine IEnumerable<question_group> enthält nicht nur erhalten, die ich definiert? Ich bekomme null .... was fehlt mir hier?

Antwort

6

Ich denke, DefaultIfEmpty funktioniert anders als erwartet. Wenn Ihre Frage keine Fragengruppe enthält, bedeutet dies vermutlich, dass die Fragengruppe null ist. DefaultIfEmpty hat nur eine Auswirkung auf leere Enumerables (dh die Anzahl der Elemente ist Null). Ein Enumerable mit einigen Nullen ist nicht leer.

Ich denke, was Sie wahrscheinlich tun möchten, ist, alle Fragengruppen, die null sind, zu entfernen und dann zu überprüfen, ob das Aufzählungszeichen leer ist. Vielleicht möchten Sie stattdessen Folgendes versuchen:

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

Vielen Dank! Das habe ich vermisst. – FiveTools

Verwandte Themen