Linq to Entities iQueryable Filter on Filtered results

时间:2014-02-19 15:29:16

标签: .net linq entity-framework iqueryable entities

我正在编写一个函数来返回一组数据。我们假设我们有

Dim myQuery = (From B In ctx.MyTable.AsQueryable
               Select
                   SomeValue = CType(B.SomeValue, Decimal?),
                   AnotherValue = CType(B.AnotherValue, Decimal?))

myQuery = myQuery.Where(Function(x) x.SomeValue<50)
Dim myInterimResult = myQuery.ToList

如何仅通过原始查询的结果查询服务器上的MyInternalResult

我的目标是双重过滤器。比如说我想首先过滤一些值,以便只返回值<50;以及一个过滤前一个结果的二次过滤器......

我必须这样做.ToList在我的第一个iqueryable过滤器上,然后只过滤.net集合中的本地结果?我担心的是,即使目前我的结果还不能达到10000多条记录。我想让我的工作量在sql server而不是在内存中完成。我的代码非常大,所以我只是举了一个简单的例子来说明我的观点。

1 个答案:

答案 0 :(得分:0)

不,您不应在应用不同过滤条件之间调用ToList。只需再次致电Where

Dim myQuery = (From B In ctx.MyTable.AsQueryable
               Select
                   SomeValue = CType(B.SomeValue, Decimal?),
                   AnotherValue = CType(B.AnotherValue, Decimal?))

myQuery = myQuery.Where(Function(x) x.SomeValue < 50)

myQuery = myQuery.Where(Function(x) x.AnotherValue < 20)