我一整天都试图解决这个问题..: - (
我正在使用C#和MSSQL并通过LINQ查询
我有一个存储在studWithTuiDisc
变量中的集合,它包含以下数据(显示在下面的链接中)
image http://secompeusc.com/images/orig.png
当使用此变量作为其他LINQ语句的参考时,结果非常不合适,在此帖之前,我执行了实验以检查是否确实错误地返回了错误的结果:
(1)我试图遍历studWithTuiDisc
,然后仅在select clause
中检查关系,因为我确信这将返回所需的输出(见下文)
代码:
var xxx = (from a in studWithTuiDisc
select new
{
please = a.StudentId,
help = _conn.EEnrolledSubjects
.Where(m => m.StudentId == a.StudentId)
.Select(m => m.StudentId)
.FirstOrDefault()
}).Distinct();
输出:
Control Experiment Output http://secompeusc.com/images/xxx.png
我们可以看到studWithTuiDisc
xxx
值是唯一值
(2)现在我尝试了让我感到头痛的方法(见下文) 代码:
var zzz = (from a in studWithTuiDisc
join b in _conn.EEnrolledSubjects on a.StudentId equals b.StudentId
select new { please = a.StudentId, help = b.StudentId }).Distinct();
或
var zzz = (from a in studWithTuiDisc
from b in _conn.EEnrolledSubjects
where a.StudentId == b.StudentId
select new { please = a.StudentId, help = b.StudentId }).Distinct();
输出:
Experiment Output http://secompeusc.com/images/zzz.png
鉴于我们已经知道studWithTuiDisc
中的值,并且因为我们将其用作_conn.EEnrolledSubjects
的过滤器,我们应该期待studWithTuiDisc
中的结果但是看着屏幕镜头,LINQ没有返回正确的结果。
我做错了什么? 有没有人经历过这样的事情呢? 有谁知道为什么会这样?