C # 中表达式树的序列化和反序列化

有没有方法在 C # 中反序列化表达式,我想在数据库中存储表达式,并在运行时加载它们。

45068 次浏览

Not in full; however, the Dynamic LINQ sample may help a bit. You can certainly serialize an expression to a string (to an extent - generics look a bit screwy), but there is no inbuilt parser.

There's an project on GitHub/Nuget called MetaLinq that aims to make working with expression tress more easy.

It converts between normal Expressions and 'EditableExpressions' which are mutable and fully Serializable, so can be used with Json, Xml, Binary etc.

Also check this blog post for more info.

Other option is the Expression Tree Serialization project on code.msdn.com - would appear to be more what is needed here?

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

WCF RIA Services allows for serializing IQuerayble<T>

WCF RIA Services Part 3 – Updating Data

I continued work on the library that was mentioned by Serializing and Deserializing Expression Trees in C#

It looks like the project was abandoned (2008) but I did some work on it and now it works with .NET 4.0 and Silverlight. I made bug fixes to their code and also made it more DAL-independent.

http://expressiontree.codeplex.com/

have a look at my new library Serialize.Linq. It serializes linq expressions to json, xml and binary.

I was working on a project for serializing expressions. It's OK and you can use it. http://www.codeproject.com/Articles/851187/ServicePredicateBuilder-for-creating-Serializable