如何加快LINQ查询的速度?

本文关键字:速度 查询 何加快 LINQ | 更新日期: 2023-09-27 18:17:42

我知道有一种更有效的方法来做到这一点,使用谓词,但由于是相当新的,我不确定究竟如何去做。

List<HousingAssignment> list;
using (OEContext context = new OEContext())
{
    var query =
        from ha in context.HousingAssignments
        where ((ha.BedID == bed.ID) &&
                (((ha.CheckIn <= checkin) && (ha.CheckOut >= checkin)) ||
                ((ha.CheckIn <= checkout) && (ha.CheckOut >= checkout))))
        select ha;
    list = query.ToList();
}
return list.Count;

如何加快LINQ查询的速度?

由于您只是返回计数,因此可以在查询中使用count方法计算它:

using (OEContext context = new OEContext())
{
  var query =
    from ha in context.HousingAssignments
    where ((ha.BedID == bed.ID) &&
            (((ha.CheckIn <= checkin) && (ha.CheckOut >= checkin)) ||
            ((ha.CheckIn <= checkout) && (ha.CheckOut >= checkout))))
    select ha;
  return query.Count();  
}

这避免了从本地数据库中提取值,存储到列表中,然后"扔掉"结果。相反,计数将在服务器上计算,并且您将只拉出一个数字。

您还可以通过对CheckInCheckOut列进行适当的索引来潜在地加快服务器上的查询。