Alexandre Brisebois
Alexandre Brisebois

Reputation: 6753

Serializing and Deserializing Expression Trees in C#

Is there a way to Deserialize Expressions in C#, I would like to store Expressions in a Database and load them at run time.

Upvotes: 97

Views: 46961

Answers (7)

Pop Catalin
Pop Catalin

Reputation: 62990

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.

Upvotes: 17

Mohammad Dayyan
Mohammad Dayyan

Reputation: 22458

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

Upvotes: 1

Rich
Rich

Reputation: 398

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

Upvotes: 14

esskar
esskar

Reputation: 10970

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

Upvotes: 13

T. Webster
T. Webster

Reputation: 10109

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/

Upvotes: 49

Jonathan Parker
Jonathan Parker

Reputation: 6795

WCF RIA Services allows for serializing IQuerayble<T>

WCF RIA Services Part 3 – Updating Data

Upvotes: 2

Marc Gravell
Marc Gravell

Reputation: 1064134

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.

Upvotes: 3

Related Questions