Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
为什么此Linq查询返回的结果与SQL等价查询不同?_Sql_Linq - Fatal编程技术网

为什么此Linq查询返回的结果与SQL等价查询不同?

为什么此Linq查询返回的结果与SQL等价查询不同?,sql,linq,Sql,Linq,我确信我遗漏了一些简单的东西,但我这里有一个linq查询: public static List<Guid> GetAudience() { var createdOn = new DateTime(2018, 6, 30, 0, 0, 0); var x = new List<Guid>(); try { var query = from acc in Account

我确信我遗漏了一些简单的东西,但我这里有一个linq查询:

 public static List<Guid> GetAudience()
    {
        var createdOn = new DateTime(2018, 6, 30, 0, 0, 0);
        var x = new List<Guid>();

        try
        {
            var query = from acc in Account
                where acc.num != null
                      && acc.StateCode.Equals(0)
                      && acc.CreatedOn < createdOn
                select new
                {
                    acc.Id
                };

            foreach (var z in query)
            {
                if (z.Id != null)
                {
                    x.Add(z.Id.Value);
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        return x;
    }
公共静态列表GetAudience()
{
var createdOn=新日期时间(2018,6,30,0,0,0);
var x=新列表();
尝试
{
var查询=来自账户中的acc
其中acc.num!=null
&&acc.StateCode.等于(0)
&&acc.CreatedOn
我想在SQL中验证计数,因为这只需要几秒钟,所以:

select count(*)
from Account a
where a.num is not null
and a.statecode = 0
and a.createdon < '2018-06-30 00:00:00'
选择计数(*)
来自帐户a
其中a.num不为null
和a.statecode=0
和a.createdon<'2018-06-30 00:00:00'
现在SQL查询返回9329,而Linq返回10928。为什么当查询正在做同样的事情时,我的计数会如此遥远(我想是这样的)?我错过了什么简单的东西


提前感谢--

您的方法将返回一个记录列表,其中
Id
值不为空(加上其他条件)。SQL查询将返回记录数的计数(加上其他条件)。如果没有表的定义,很难知道这是否重要


无关提示:捕获并接受这样的异常不是一个好主意——方法的调用者不知道发生了什么错误,因此处理将继续进行;但它将使用不完整的数据,可能会在以后的程序中导致其他问题。

@GertArnold我无法检查生成的SQL,因为它已被执行,并且我正在内存中工作:(那么什么是
Account
,它是通过哪个流程创建的?@GertArnold它是我们CRM中的一个实体——我删除了完整的调用,但本质上是x.serviceContext.Account,其中x是一个允许我与CRM对话的对象(我能解释它的最佳方式,对此有点陌生)谢谢,我也很感激这个提示。