包含空值的 Linq 查询
本文关键字:查询 Linq 空值 包含 | 更新日期: 2023-09-27 18:37:05
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 查询,如果不符合 where PreviousAttempts
,我会得到 null 值。因此,如果它包含 null,我想更改这个 0,而不是包含 null,如果它不包含非 null 值,则恢复原始值。
由于我无法更改每个记录的PreviousAttempts
,我如何实现这一点?
您可以在此处使用空合并运算符,例如
PreviousAttempts = SubIdAtt.Where(c => c.SUBID == entity.SUBJECT_ID)
.Select(c => c.ATT)
.FirstOrDefault() ?? 0;
或者,如果你想保持它全部 LINQized 使用 DefaultIfEmpty 方法,例如
PreviousAttempts = SubIdAtt.Where(c => c.SUBID == entity.SUBJECT_ID)
.Select(c => c.ATT)
.DefaultIfEmpty(0)
.FirstOrDefault();
您可以使用合并运算符。 ??
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() ?? 0
};