LINQ - IQueryable optimization - 它需要吗?

时间:2015-08-26 08:55:09

标签: c# linq optimization iqueryable

假设我们有一个包含很少复选框的表单(类似的报告可以说 - 基于同一个表,但不同的过滤器)。

我有一个方法,它只需要很少的参数 - 其中3个参数对于每个报告都是通用的,其中3个特定于报告。简化版:

public IEnumerable<ReportSet> GetAList(DateTime commonDate, bool commonBoolean, TypeEnum mainReportType, AnotherTypeEnum sideType)
{
  IQueryable<ReportSet> aList = this.DB.Reports;

  aList = aList.FilterByDate(commonDate);
  aList = aList.FilterByBool(commonBoolean);

  switch(mainReportType)
  {
    case 1:
       aList = aList.Where(x=>x..)
       break;
    case 2:  
       aList = aList.Where(x=>x..)
       break;
  }

 return aList;
}

如果要检查所有复选框,我必须将该方法的firts部分多次(所以从db和2 filterBy获取),但我必须使用一些元组,因为我需要一组参数用于每个特定的报告参数和foreach元组用开关部分调用私有方法我猜。

我可以做到但是值得制作它,因为那些过滤器只在iqueryable的一部分上? (在任何情况下,从DB获取数据都将进行几次)。

有什么建议吗?

编辑:根据下面的答案,这是我的计划: 我将采取所有过滤器,构建一个查询,让所有想要的数据填充所有检查列表(但没有更多),而不是去数据库(只有一次,因为进入数据库是这里最大的成本,我想我想这样做这只是一次),而不是将结果拆分到c#中需要的列表。

0 个答案:

没有答案