使用BinarySerializer De / Serialize基本Linq表达式

时间:2016-11-14 11:32:49

标签: linq serialization linq-expressions

我正在寻找一个库/工具,以便能够对Linq表达式进行de / serialize。

那边有些图书馆吗? 已经在.Net上本地支持了吗?我怎么能得到一个入门代码?

1 个答案:

答案 0 :(得分:0)

目前还不清楚您要序列化的内容:Linq表达式的结果,或者您可以在序列上使用的表达式。

IEnumerable<MyCollectionItem> MyCollection = ...;
IEnumerable<MyItem> result = MyCollection.LinqQuery(...);

您要序列化结果吗?或者您想要序列化LinqQuery,以便稍后可以在不同的集合中使用它:

IEnumerable<MyItem> otherResult = OtherCollection.DeserializedLinqQuery()

第一个很简单:将结果转换为List<MyItem>并序列化/取消激活列表。

第二个是不可能的,毕竟,LinqQuery只不过是IEnumerable的一个(可能的复合)扩展函数

static class MyCollectionItemExtensions
{
    public static IEnumerable<MyItem> MyLinqQuery(this IEnumerable<MyCollectionItem>(...)
    {
        ...
    }
 }

MyLinqQuery是一个函数,只有在你将它应用到一个序列后,你才能获得一个可以枚举的对象。序列化函数并不容易。

但是,如果MyLinqQuery是IQueryable,则查询不是应用于MyCollection元素的函数,而是具有应用于MyCollection元素的表达式的函数。您可以向IQueryable询问其表达式并将其序列化。

关于如何在StackOverflow: Serializing and deserialize expression tress

上的文章中有几个答案