我正在寻找一个库/工具,以便能够对Linq表达式进行de / serialize。
那边有些图书馆吗? 已经在.Net上本地支持了吗?我怎么能得到一个入门代码?答案 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
上的文章中有几个答案