c# - 使用 where 语句的 LINQ 非常慢

标签 c# entity-framework linq

我有一个如下所示的 LINQ:

var something = db.Calculations
            .Where(x => x.CalculationDate.Date == justTheDate 
            && x.CalculationID == externalObject.CalculationID 
            && x.CalculationDate >= minDate 
            && x.CalculationDate <= maxDate).GroupBy(x => 
            (int)x.CalculationDate.TimeOfDay.TotalMinutes);

其中 justTheDateminDatemaxDate(日期时间)和 externalObject.CalculationID(字符串)都是变量范围内发现。

当我枚举它时(使用诸如 something.Select(x=>x.Last()).ToList() 之类的东西),大约需要 15 秒。有很多数据,但与生产中的预期不符。

有什么办法可以让这个查询更快吗?

最佳答案

您可以使用此代码来获取生成的 SQL 查询:

var objectQuery = something as System.Data.Objects.ObjectQuery;
string strQuery = objectQuery.ToTraceString();

获取查询后,您可以直接在数据库上执行它。如果它再次变慢,您应该为您的 where 子句列创建一个适当的索引。

关于c# - 使用 where 语句的 LINQ 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935713/

相关文章:

c# - 使用 ASP.NET Web 应用程序更改默认数据库

c# - Entity Framework 代码优先 - 初始代码迁移不起作用

c# - 如何使用表达式生成此属性实现而不是发出 IL?

c# - LINQ 找到最近的坐标

c# - Azure,ClosedXML : Build will NOT include DocumentFormat. OpenXML 在我的应用程序的 bin 文件夹中

c# - 从具有字符串值的列中删除坏字符

c# - SQL 字宽 "%like%"使用 lambda 表达式在 Entity Framework 6 中搜索

linq - linq可以写Update语句吗?

c# - ProtectedMemory - 如何保证字节数组的大小是16的倍数?

c# - Entity Framework 6 更新多对多而不更新或加载 Child