C# 为什么序列化DataContract时不能使用lambda?

C# 为什么序列化DataContract时不能使用lambda?,c#,lambda,datacontract,C#,Lambda,Datacontract,制作下面的som模拟代码来说明我的示例。问题是lambda表达式。如果我将其保留为代码示例中的状态,则在尝试调用服务时它将不会序列化但是如果我在lambda之后键入.ToList(),它将按其应该的方式序列化 为什么呢?我不明白为什么下面的代码不能工作。。。 有人想启发我吗?:) 那是因为延期执行。您存储的不是lambda执行的结果,而是表达式树或lambda本身,它需要序列化对modelPerson的引用(!) 更多的例子显示了与此相关的“问题”。(更多信息,请在谷歌搜索“deferredex

制作下面的som模拟代码来说明我的示例。问题是lambda表达式。如果我将其保留为代码示例中的状态,则在尝试调用服务时它将不会序列化但是如果我在lambda之后键入
.ToList()
,它将按其应该的方式序列化

为什么呢?我不明白为什么下面的代码不能工作。。。 有人想启发我吗?:)


那是因为延期执行。您存储的不是lambda执行的结果,而是表达式树或lambda本身,它需要序列化对
modelPerson
的引用(!)


更多的例子显示了与此相关的“问题”。(更多信息,请在谷歌搜索“deferredexecution.net”)

如果您描述如何声明所涉及的类,将会有所帮助。你说的“不会序列化”到底是什么意思?是的,我知道,但仍然认为它会在序列化之前运行查询。。。谢谢你的快速回复
var list = new EntityPerson
               {
                   Names = modelPerson.Names.Select(
                                     n => new EntityName
                                              {
                                                   Text = n.Text
                                              })
                }