【问题标题】:Linq to Entities iQueryable Filter on Filtered resultsLinq to Entities iQueryable Filter on Filtered results
【发布时间】:2014-02-19 15:29:15
【问题描述】:

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

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

我的目标是双重过滤器。假设我想先过滤一些值,以便只返回

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

【问题讨论】:

    标签: .net linq entity-framework iqueryable entities


    【解决方案1】:

    不,您不应该在应用不同的过滤条件之间调用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)
    

    【讨论】:

    • 所以假设第一次迭代我想显示一些价值
    • 好的,我已经测试过了,在同一字段上添加多个 where 似乎过滤了前一个。感谢您的帮助!
    • 是的,所有条件都已评估。即使您基于同一列进行过滤,其他内容也不会覆盖之前添加的内容。
    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多