怎样用LINQ或EF生成NOT IN和IN语句

时间:2023-03-09 19:01:19
怎样用LINQ或EF生成NOT IN和IN语句

例如:有一个问卷表Questionnaire和一个活动与问卷的关系表ActivityOption_Questionnaire,现在我们要找出不在活动中的问卷。

用lambda实现方法如下:

var notIn = db.Questionnaires.Where(a => !((db.ActivityOption_Questionnaire_s.Select(b => b.QuestionnaireID)).Contains(a.ID)));

用LINQ实现方法:

var notIn = from a in Questionnaire
where !((from b in db.ActivityOption_Questionnaire_s select b.QuestionnaireID).Contains(a.ID))
select a;

用lambda实现In:

db.L_Reply.SelectMany(s => logs, (s, p) => new {s, p})
.Where(@t => @t.s.LogID == @t.p.ID)
.Select(@t => @t.s).Count()