Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不在第二条中列出对象_C#_Linq - Fatal编程技术网

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);