繁体   English   中英

优化C#LINQ查询

[英]Optimize C# LINQ Query

我正在研究C#项目,并使用SQL Server 2008 R2 Express作为后端。

我必须找到预订的数量,其中BookingDate's Date component大于a tempDate

我写了以下代码:

DateTime tempDate = new DateTime(DateTime.Now.Year, 4, 1); //<= 5ms
var bookings = context.Bookings.Where(x => x.IsDeleted == false).ToList(); //<= 2ms
var count = bookings.Count(x => x.BookingDate.Date >= tempDate); //<= 2,534 ms

这段代码可以正常工作,但是我花了将近3秒钟的时间来执行计数(我发现使用VS 2015的执行时间)。 我想优化此代码,以减少执行时间。 预订表包含近20,000条记录。

如何最小化计算成本?

原来我以前的回答不是那么好。 我使用具有1万个实体的表并使用.ToList()进行了一些测试,时间从280ms变为380ms。 我也发现选择.Date在linq查询中不起作用,因此您必须执行.ToList()。 如果要在查询中选择计数,则不能使用DateTime。Date只能使用DateTime。

2,500ms相当慢。 如果您在发布模式下运行应用程序,则速度可能会快很多。


DateTime tempDate = new DateTime(DateTime.Now.Year, 4, 1); 
int count = context.Bookings.Count(x => x.IsDeleted == false && x.BookingDate >= tempDate); 

问题是.ToList(),因为它查询所有表行而不是仅查询计数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM