优化c# LINQ查询

本文关键字:查询 LINQ 优化 | 更新日期: 2023-09-27 18:11:27

我正在做一个c#项目,使用SQL server 2008 R2 express作为后端。

我必须找到BookingDate's Date component大于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发现执行时间)。我想优化这段代码,以减少执行时间。

如何使计算成本最小化?

优化c# LINQ查询

原来我之前的回答不是那么好。我使用一个包含10,000个实体的表并使用. tolist()进行了一些测试,时间从280ms缩短到380ms。此外,我发现选择。date在linq查询中不起作用,因此您必须执行。tolist()。如果要在查询中选择count,则不能使用DateTime。日期你只需要使用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(),因为它查询所有表行,而不仅仅是计数