我应该重用相同的LINQ IQueryable吗?
本文关键字:LINQ IQueryable 我应该 | 更新日期: 2023-09-27 18:18:06
如果我有以下LINQ查询:
public class _employeeRepository
{
public IQueryable<Employee> getAll()
{
var q = from e in Employees select e;
return q;
}
}
. .我应该做以下的事情来获得活跃的员工
public IQueryable<Employee> getActiveEmployees>()
{
return _employeeRepository.getAll().Where(q => q.active);
}
. .还是我应该创建一个单独的函数?
public class _employeeRepository
{
public IQueryable<Employee> getAll()
{
var q = from e in Employees select e;
return q;
}
public IQueryable<Employee> getActive()
{
var q = from e in Employees where e.active == true select e;
}
}
这样做或那样做的优点或缺点是什么?
GetActive
和GetActiveEmployees
将做完全相同的事情,即生成一个查询并保留它等待执行。
查询将不被发送到数据库,直到你"物化"它,即通过调用ToList
或在foreach
语句中使用IQueryable
。
然后,只有在那时,查询才会执行(在这两种情况下类似于select * from Employees where IsActive=1
)
也就是说,尽可能重用代码更好,所以我将采用第一种方法。