C# 不在第二条中列出对象
我正在尝试创建如下查询:C# 不在第二条中列出对象,c#,linq,C#,Linq,我正在尝试创建如下查询: select * from Subjects where subjectid not in ( select subjectid from results) _CD.Where(c => !_results.Select(r => r.subjectid).Contains(c.subjectid)) 为此,我有一个对象查询结果表 var _results = new List<C_MiscObjects.obj_Results&g
select * from Subjects
where subjectid not in ( select subjectid from results)
_CD.Where(c => !_results.Select(r => r.subjectid).Contains(c.subjectid))
为此,我有一个对象查询结果表
var _results =
new List<C_MiscObjects.obj_Results>();
_results = _Enrollment.GetResultView(Convert.ToInt16(lblSid.Text), lblCourseid.Text);
SQL:
林克:
你想要这样的东西:
select * from Subjects
where subjectid not in ( select subjectid from results)
_CD.Where(c => !_results.Select(r => r.subjectid).Contains(c.subjectid))
SQL查询本身可以根据两个表之间的左联接进行重写,如下所示:
select * from subjects s
left join results r on s.subjectid = r.subjectid
where r.subjectid is null
翻译成LINQ后,它变成:
var filtered = _CD
.GroupJoin(_results, x => x.subjectid, y => y.subjectid, (x,y) => new {x,y})
.SelectMany(xy => xy.y.DefaultIfEmpty(), (x,y) => new {x,y})
.Where(xy => xy.y == null)
.Select(xy => xy.x);
可能会有帮助。您可以尝试_CD=\u Enrollment.GetSubjectslblCourseid.Text.Where=>_results.Anyr=>r.subjectid==s.subjectid
select * from subjects s
left join results r on s.subjectid = r.subjectid
where r.subjectid is null
var filtered = _CD
.GroupJoin(_results, x => x.subjectid, y => y.subjectid, (x,y) => new {x,y})
.SelectMany(xy => xy.y.DefaultIfEmpty(), (x,y) => new {x,y})
.Where(xy => xy.y == null)
.Select(xy => xy.x);