我有疑问可能有也可能没有question_group
如果所有问题都没有question_group,并且如果我使用默认值为空,请执行以下操作:
question_group defaultQuestion = new question_group {question_group_id = Guid.Empty};
questions.Select(x => x.question_group).DefaultIfEmpty(defaultQuestion).Distinct();
我不应该只包含我定义的默认question_group的IEnumerable<question_group>
吗?我得到了......我在这里错过了什么?
答案 0 :(得分:6)
我认为DefaultIfEmpty
的工作方式与您的预期不同。如果您的问题没有问题组,则可能这意味着其问题组为空。 DefaultIfEmpty
仅对 empty 枚举产生影响(即元素数量为零)。包含一些空值的可枚举不为空。
我认为您可能要做的是删除所有null的问题组,然后检查枚举是否为空。你可能想尝试这样的事情:
var questionGroups = questions.Select(x => x.question_group)
.Where(x => x != null)
.DefaultIfEmpty(defaultQuestion)
.Distinct();