C# 包含空值的Linq查询
上面是我的linq查询,其中在C# 包含空值的Linq查询,c#,linq,C#,Linq,上面是我的linq查询,其中在PreviousAttempts字段中,如果不满足where,我将得到空值。因此,我不想包含null,而是想在0包含null时更改它,如果它不包含非null值,则恢复原始值 由于我无法更改每个记录的以前的尝试次数,如何实现这一点 您可以在此处使用运算符,例如 var records = from entity in q1.question_papers select new {
PreviousAttempts
字段中,如果不满足where,我将得到空值。因此,我不想包含null,而是想在0包含null时更改它,如果它不包含非null值,则恢复原始值
由于我无法更改每个记录的以前的尝试次数
,如何实现这一点 您可以在此处使用运算符,例如
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(),
};
或者,如果您想保持所有的LINQID,请使用以下方法:
PreviousAttempts = SubIdAtt.Where(c => c.SUBID == entity.SUBJECT_ID)
.Select(c => c.ATT)
.FirstOrDefault() ?? 0;
你可以使用凝聚操作符<代码>??
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
};