如果我有以下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;
}
}
以某种方式做到这一点有什么优势或劣势?
答案 0 :(得分:1)
GetActive
和GetActiveEmployees
都会做同样的事情,即生成一个查询并保留它以供执行。
查询将不发送到数据库,直到您实现&#34;它,即拨打ToList
或在IQueryable
声明中使用foreach
。
然后,只有这样,查询(在两种情况下都类似于select * from Employees where IsActive=1
)才会执行
尽管如此,在可能的情况下重用代码会更好,所以我会采用第一种方法。