下面用som模拟代码来说明我的例子。问题是lambda表达式。如果我在代码示例中保留它,当我尝试调用服务时它将不会序列化。 然而如果我在lambda之后键入.ToList()
,它应该按顺序排序。
为什么?我不明白为什么下面的代码不起作用...... 有人关心开导我吗? :)
var list = new EntityPerson
{
Names = modelPerson.Names.Select(
n => new EntityName
{
Text = n.Text
})
}
答案 0 :(得分:5)
这是因为延迟执行。您不是存储lambda执行的结果,而是存储表达式树或lambda本身,它需要将引用(!)序列化为modelPerson
。
http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx以及更多人显示与此相关的“问题”。 (谷歌的“延期执行.net”更多。)