首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有左连接的LINQ查询,没有null列表的Group by

带有左连接的LINQ查询,没有null列表的Group by
EN

Stack Overflow用户
提问于 2018-02-25 17:19:57
回答 2查看 67关注 0票数 2

我正在使用Left-Join和groupBy进行LINQ查询,所以我有可能有也可能没有答案集合的问题列表。我想要所有的问题分组的问题和他们的答案列表,如果它是空的,那么就不想添加。

我当前的解决方案运行良好,但它仍然添加了一个空列表,其中没有答案,因此在答案count()上给出了错误的结果

代码语言:javascript
复制
var dhd = (from question in Context.Questions
                   join answer in Context.Answers on question.Id equals answer.QuestionId into ps
                   from answerDetail in ps.DefaultIfEmpty()
                   group answerDetail by question into grouped
                   select new
                   {
                       Question = grouped.Key,
                       Answer = grouped.ToList(),
                       //Answer = grouped.ToList() == null ? "(No Answer)" : grouped.Select(x => x.Value).FirstOrDefault(),
                       TotalAnswerCount = grouped.Count()
                   }).ToList();

我已经尝试了上面代码中的脚本,但它抛出了空异常

代码语言:javascript
复制
    Answer = grouped.ToList() == null ? "(No Answer)" : grouped.Select(x => x.Value).FirstOrDefault(),
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-25 19:04:58

当你调用ps.DefaultIfEmpty()时,它会为不匹配的元素创建一个null的列表。如果您只想获取null,而不是一个包含null元素的列表,那么可以尝试以下代码:

代码语言:javascript
复制
Answer = grouped.FirstOrDefault() == null ? null : grouped.ToList(),

如果没有匹配,则答案为空,否则将得到一个列表。

票数 2
EN

Stack Overflow用户

发布于 2018-02-25 17:40:15

我认为问题是因为类型而发生的,所以试试这个:

代码语言:javascript
复制
Answer = grouped.ToList() == null ? null : grouped.Select(x => x.Value).FirstOrDefault(),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48972031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档