为什么在序列化DataContract时我不能使用lambda?

时间:2010-10-11 16:30:43

标签: c# lambda datacontract

下面用som模拟代码来说明我的例子。问题是lambda表达式。如果我在代码示例中保留它,当我尝试调用服务时它将不会序列化。 然而如果我在lambda之后键入.ToList(),它应该按顺序排序。

为什么?我不明白为什么下面的代码不起作用...... 有人关心开导我吗? :)

var list = new EntityPerson
               {
                   Names = modelPerson.Names.Select(
                                     n => new EntityName
                                              {
                                                   Text = n.Text
                                              })
                }

1 个答案:

答案 0 :(得分:5)

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

http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx以及更多人显示与此相关的“问题”。 (谷歌的“延期执行.net”更多。)