C# 实体框架查询的奇怪行为

C# 实体框架查询的奇怪行为,c#,.net,linq,entity-framework,C#,.net,Linq,Entity Framework,下面的查询即使在数据库中有匹配的记录,也不会产生任何结果。 即使生成的查询在DB中执行时也会产生结果 此外,当向查询中添加“order by”时,查询将生成结果 查询参数中没有更改 同样的查询适用于dev数据库,在QA数据库中不会产生任何结果 与Dev相比,QA数据库没有变化 我认为您需要为ADMINGROUP添加筛选器 var currentDept = (from d in dbContext.TBLZLISTDEPTs where d.ADMINGROUP != null selec

下面的查询即使在数据库中有匹配的记录,也不会产生任何结果。

  • 即使生成的查询在DB中执行时也会产生结果
  • 此外,当向查询中添加“order by”时,查询将生成结果
  • 查询参数中没有更改
  • 同样的查询适用于dev数据库,在QA数据库中不会产生任何结果
  • 与Dev相比,QA数据库没有变化

我认为您需要为ADMINGROUP添加筛选器

var currentDept = (from d in dbContext.TBLZLISTDEPTs
where d.ADMINGROUP != null
select new 
{
   d.ADMINGROUP
}).FirstOrDefault();

通常与错误的连接字符串相关(EF创建DBs和表,因此如果您使用错误的连接字符串,这是结果,但这不是您的情况),或者与EF提供程序相关。如果拆分行var currentDept。。。。。。。。。。。。。。。在FirstOrDefault之前,您将看到EF在DB上运行的查询。看看有什么区别(在本例中,是在EF提供程序工作之后,以便您最终可以看到EF提供程序的错误)。不按部门排序时,
ADMINGROUP
的第一个结果不为空,而排序后的第一个结果不为空?(您使用的是
FirstOrDefault
)您使用的是FirstOrDefault,您的记录将为空。但是,当您使用“按记录顺序更改”时,第一个记录必须有一个值,即为什么您在第二个查询中看到记录而不是在第一个查询中看到记录。