延迟执行linq表达式的持久性

时间:2009-11-04 21:00:46

标签: .net linq persistence deferred-execution

我们正在尝试序列化一些数据,集合中的一个项目是“延迟执行linq语句”(实际上它是对集合进行Concat调用的结果)。

问题是如何坚持该对象。它不支持ISerializable。实际类型与System.Linq.Enumerable.WhereSelectListIterator<>

一致。

只是想知道是否有人之前遇到过此问题,解决方案是什么。

2 个答案:

答案 0 :(得分:2)

您可以在Linq声明中调用ToList();这将收集所有结果并将其返回List<T>,然后您可以序列化。

答案 1 :(得分:1)

如果查询结果并序列化它们不是一个选项,则必须以某种方式手动序列化查询。

一个问题是有太多不同的LINQ查询对象类型。所有这些类型都是框架内部的。这几乎把你锁定了。

虽然可能有针对您具体案例的解决方案。如果您需要序列化的唯一类型的查询是Concat调用的结果,则解决方案可能不会太复杂。所有这些都取决于您连接的集合以及您(或想要)序列化它们的方式。