【问题标题】:Use LINQ on stored procedure results without enumerating the stored procedure results first.对存储过程结果使用 LINQ,而不首先枚举存储过程结果。
【发布时间】:2013-11-20 03:21:32
【问题描述】:

我有一个创建和执行动态查询的存储过程。我希望能够将该存储过程的结果用作尚未执行的 IQueryable。

IE

context.StoredProcedure(parameter1, parameter2)
        .Where(i => i.StatusID != 2)
        .OrderBy(j => j.Policy)
        .Skip(recordsToSkip)
        .Take(pageSize).ToList();

这可能吗?我不希望该过程返回结果列表,然后执行分页。

【问题讨论】:

  • 为什么不把分页细节放在存储过程中并通过它们?
  • 我不确定在纯 TSQL 中是否可行(您可能必须将 SP 结果提取到临时表并查询该表)。看起来你的 SP 真的应该是一个视图。
  • 我们已经有了一个函数,它接受一个 IQueryable 并将返回一个包含分页和排序算法的 IQueryable。我想使用它,所以它更加集中。
  • 在这种情况下,我会按照@MarcinJuraszek 所说的去做。围绕它包裹一个视图,这样你就可以让你的IQueryable 用一个很好的查询访问数据库。
  • 嗯好的。我不是将存储过程包装在视图中的意思,但我想这是一个不同的问题。

标签: c# .net linq sql-server-2008


【解决方案1】:

使用表值函数代替存储过程。它返回 IQueryable,因此您可以在查询中使用 linq-to-sql。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    相关资源
    最近更新 更多