LINQ to SQL返回错误的结果

时间:2011-07-31 11:36:03

标签: c# .net linq linq-to-sql

我一整天都试图解决这个问题..: - (

我正在使用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没有返回正确的结果。

我做错了什么? 有没有人经历过这样的事情呢? 有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

使用DataContext.Log或SQL事件探查器检查生成/发送到SQL Server的内容。我认为您的查询会有所不同。