C# Count()一直给我0,即使返回了一行

C# Count()一直给我0,即使返回了一行,c#,asp.net-mvc,C#,Asp.net Mvc,好吧,我有一个注册网站,其中一部分阻止用户重新注册课程 我的代码是这样的(最初): 昨晚,它工作正常,但当我再次测试它时,它不再工作了 通常,这很简单,我需要做的就是计算返回的行数,如果0,那么就没有重复的行。我可以通过使用Count()来实现这一点,但它已经不起作用了 我决定检查每个断点的值 结果: 第一个值是 而第二个是 我决定重新运行查询以检查: 因此应该有一行,但是Count()不断地给我0,因此允许用户重新注册主题(他们不应该这样) 如果我将程序更改为if(query==null

好吧,我有一个注册网站,其中一部分阻止用户重新注册课程

我的代码是这样的(最初):

昨晚,它工作正常,但当我再次测试它时,它不再工作了

通常,这很简单,我需要做的就是计算返回的行数,如果
0
,那么就没有重复的行。我可以通过使用
Count()
来实现这一点,但它已经不起作用了

我决定检查每个断点的值

结果:

第一个值是

而第二个是

我决定重新运行查询以检查:

因此应该有一行,但是
Count()
不断地给我
0
,因此允许用户重新注册主题(他们不应该这样)

如果我将程序更改为
if(query==null)
,它就会工作,但我想知道为什么它一直给我0?我发誓昨晚它工作得很好


您的查询不正确

 where subj.studid == st.id && subj.studid == sbj.id // both refer to studid
应该是

 where subj.studid == st.id && subj.subjid== sbj.id

强烈建议您遵循正常的命名约定,以最大限度地降低此类错误的风险(即,您的字段应命名为
StudentId
SubjectId

您的查询不正确

 where subj.studid == st.id && subj.studid == sbj.id // both refer to studid
应该是

 where subj.studid == st.id && subj.subjid== sbj.id

强烈建议您遵循正常的命名约定,以最大限度地降低出现此类错误的风险(即,您的字段应命名为
StudentId
SubjectId

哦,哇,我没有意识到这一点,是的,我需要改进命名约定。非常感谢。哦,哇,我没听清楚,是的,我需要改进我的命名约定。非常感谢。您应该运行sql profiler来查找调试时触发的查询,而不是假设查询。请更仔细地选择标记。这与asp.net-mvc完全无关。另外一点需要注意的是:如果你在一个罐子里有一些硬币,你想知道罐子里有没有硬币,你需要数一数才能知道吗?使用
Count();有时,它实际上需要计算所有的便士。如果您只关心是否存在零或非零,请使用
Any()
。它只是检查是否至少有一个,而不是全部计数。您应该运行sql profiler来查找调试时触发的查询,而不是假设查询。请更仔细地选择标记。这与asp.net-mvc完全无关。另外一点需要注意的是:如果你在一个罐子里有一些硬币,你想知道罐子里有没有硬币,你需要数一数才能知道吗?使用
Count();有时,它实际上需要计算所有的便士。如果您只关心是否存在零或非零,请使用
Any()
。它只是检查是否至少有一个,而不是全部计算。