gpt4 book ai didi

c# - sub linq 查询使这需要很长时间,我怎样才能使它更快?

转载 作者:行者123 更新时间:2023-11-30 19:17:37 24 4
gpt4 key购买 nike

我有一个员工列表,我是这样构建的:

var employees = db.employees.Where(e => e.isActive == true).ToList();

var latestSales = from es in db.employee_sales.Where(x => x.returned == false);

现在我想要的是这样的结果:

int employeeId
List<DateTime> lastSaleDates

所以我尝试了这个,但是查询需要很长时间才能完成:

var result = 
(from e in employees
select new EmployeeDetails
{
EmployeeId = e.employeeId,
LastSaleDates =
(from lsd in latestSales.Where(x => x.EmployeeId == e.EmployeeId)
.Select(x => x.SaleDate)
select lsd).ToList()
};

以上工作正常,但实际上需要 1 分钟才能完成。

执行此操作的更有效方法是什么?

最佳答案

您可以使用 join 在单个查询中获取所有数据

var result = from e in db.employees.Where(x => x.isActive)
join es in db.employee_sales.Where(x => x.returned)
on e.EmployeeId equals es.EmployeeId into g
select new {
EmployeeId = e.employeeId,
LastSaleDates = g.Select(x => x.SaleDate)
};

很遗憾,您不能使用 ToList()使用 Linq to Entities 的方法。因此,要么手动将匿名对象映射到您的 EmployeeDetails或更改 LastSalesDates输入 IEnumerable<DateTime> .

关于c# - sub linq 查询使这需要很长时间,我怎样才能使它更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com