2010-05-21 44 views
5

tôi có thắc mắc có thể có hoặc có thể không có một question_groupSử dụng DefaultIfEmpty trong LINQ - vấn đề thay thế một giá trị null cho một giá trị mặc định

nếu tất cả các câu hỏi không có một question_group và nếu tôi sử dụng mặc định nếu có sản phẩm nào như thế này :

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

tôi không nên nhận được IEnumerable<question_group> chỉ chứa nhóm câu hỏi mặc định mà tôi đã xác định? Tôi nhận được null .... tôi đang thiếu gì ở đây?

Trả lời

6

Tôi nghĩ rằng DefaultIfEmpty hoạt động khác với cách bạn mong đợi. Nếu câu hỏi của bạn không có nhóm câu hỏi, có lẽ điều này có nghĩa là nhóm câu hỏi của nó là null. DefaultIfEmpty chỉ có hiệu lực trên trống đếm (nghĩa là số lượng phần tử bằng 0). Một số đếm có chứa một số null không được để trống.

Tôi nghĩ những gì bạn có thể muốn làm là xóa tất cả các nhóm câu hỏi không có giá trị và sau đó kiểm tra xem số đếm có trống không. Bạn có thể muốn thử một cái gì đó như thế này thay thế:

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

Cảm ơn! Đó là những gì tôi đã mất tích. – FiveTools

Các vấn đề liên quan