我正在编写一个函数来返回一组数据。我们假设我们有
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而不是在内存中完成。我的代码非常大,所以我只是举了一个简单的例子来说明我的观点。
答案 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)