【问题标题】:Serializing IQueryable<T> to session state server将 IQueryable<T> 序列化为会话状态服务器
【发布时间】:2011-11-03 05:38:43
【问题描述】:

如何在 SQL Server 会话状态或任何其他状态服务器中存储 LINQ 查询(即 IQueryable&lt;T&gt; 类型)?

【问题讨论】:

  • 内存中集合的 linq 表达式?

标签: .net linq session-state


【解决方案1】:

您无法序列化IQueryable,但您可以序列化生成IQueryable 的表达式树。查看以下问题和相关的 MSDN 链接。

Can you Pass Func<T,bool> Through a WCF Service?

http://archive.msdn.microsoft.com/exprserialization

【讨论】:

    【解决方案2】:

    您可以使用 visitor 手动序列化/反序列化与 IQueriable 关联的 Expression

    或在这里查看:http://archive.msdn.microsoft.com/exprserialization

    【讨论】:

      【解决方案3】:

      据我所知,IQueryable 的大多数实现都是不可序列化的,所以你不能这样做。但无论如何,你为什么需要这样做?如果您想保存查询的结果,只需在查询上调用ToList 并将结果存储在会话中

      【讨论】:

      • 到目前为止,我将 linq 查询存储在进程内会话中。由于 Web 服务器上的会话频繁到期,现在我们想迁移到 State 服务器。
      • -1 因为这是一条评论。您可能希望保留表达式树的原因有很多。我在自定义寻呼机控件实现中使用了它。
      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 2016-06-17
      • 1970-01-01
      • 2010-10-27
      相关资源
      最近更新 更多