var records = from entity in q1.question_papers
              select new
              {
                  QuestionPaperID = entity.QUESTION_PAPER_ID,
                  SubjectID = entity.SUBJECT_ID,
                  PreviousAttempts = SubIdAtt.Where(c => c.SUBID == entity.SUBJECT_ID)
                                             .Select(c => c.ATT)
                                             .FirstOrDefault(),
              };

上面是我的 linq 查询,在 PreviousAttempts 字段中,如果不满足 where,我会得到空值。因此,如果它包含空值,我想更改此 0 而不是包含空值,如果它不包含非空值,则恢复原始值。

由于我无法为每条记录更改 PreviousAttempts,我该如何实现?

最佳答案

您可以在此处使用 null-coalescing 运算符,例如

PreviousAttempts = SubIdAtt.Where(c => c.SUBID == entity.SUBJECT_ID)
                           .Select(c => c.ATT)
                           .FirstOrDefault() ?? 0;

或者,如果您想保留所有 LINQified,请使用 DefaultIfEmpty 方法,例如
PreviousAttempts = SubIdAtt.Where(c => c.SUBID == entity.SUBJECT_ID)
                           .Select(c => c.ATT)
                           .DefaultIfEmpty(0)
                           .FirstOrDefault();

关于c# - 包含空值的 Linq 查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19639651/

10-13 08:35