我应该重用相同的LINQ IQueryable吗?

时间:2014-08-14 15:55:42

标签: c# .net linq

如果我有以下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;
    }
}

以某种方式做到这一点有什么优势或劣势?

1 个答案:

答案 0 :(得分:1)

GetActiveGetActiveEmployees都会做同样的事情,即生成一个查询并保留它以供执行。

查询将发送到数据库,直到您实现&#34;它,即拨打ToList或在IQueryable声明中使用foreach

然后,只有这样,查询(在两种情况下都类似于select * from Employees where IsActive=1)才会执行

尽管如此,在可能的情况下重用代码会更好,所以我会采用第一种方法。