将IQueryable称为IEnumerable,在客户端进行过滤?

时间:2013-02-05 03:51:52

标签: c# iqueryable

我在这里读了一篇文章:N-tier Zombie with wcf

我遇到了以下语句“zombieRepository.GetAll()。Where(funcComp)”,GetAll()返回IQueryable,但where语句在{{1}中传递参数,实际上将Func<>接口称为IQueryable接口。

这个调用的问题是过滤器是在客户端完成的(读取所有IEnumerable,然后应用过滤器),而不是在sql server端,我的理解是否正确?

代码段:

dtos.ZombieIncident

1 个答案:

答案 0 :(得分:1)

有两种不同的Where扩展方法:

System.Linq.Enumerable.Where

  • 接受Func<TSource, Boolean>参数
  • 过滤内存中的集合

System.Linq.Queryable.Where

  • 接受Expression<Func<TSource, Boolean>>参数
  • 在数据源中过滤集合

如果您不确定使用哪种方法,请将光标放在上面并点击F1。您将被发送到与上述链接之一相对应的页面。