You're attempting to serialize a delegate (that
Func<>
parameter) which isn't supported by .NET defaults. There are ways to get around that:
1)
Anonymous Method Serialization[
^]) : Only works if your delegate doesn't close over local variables and doesn't include other, non-serializable objects (e.g. an expression tree). (Not tested by me.)
2)
InterLINQ[
^] : Lets you serialize an expression tree, in general. The actual implementation abstracts the whole querying-process over WCF away, as if the EF-DbContext was available at the client. (I'm using it successfully, not with EF though.)
3) Not pretty, but the only alternative if option 1 doesn't work for you and you shy away from option 2: Instead of expressing your query-predicate in form of a delegate, express it with simple parameters or a class that holds the query parameters - and then build the query server-side from that.