C#学习教程:在ASP.NET网页中使用带有匿名类和隐式类型数组的LINQ时出错我正在尝试使用WebPatrix模拟使用网页的页面。我已将一个隐式类型的匿名对象分配给其中一个PageData键,但是当我尝试对集合使用LINQ方法时,出现以下错误:CS1977:无法使用lambda表达式作为动态调度操作的参数无需先将其转换为委托或表达式树类型这是一些示例代码:@{PageData["Vals"]=new[]{new{ID=1,Quantity=5},new{ID=2,Quantity=3}};varsum=PageData["Vals"].Sum(x=>x.Quantity);如果我首先将数组存储在常规对象中,我可以在其上使用LINQ方法。当它作为动态对象从PageData出来时似乎存在问题-但我似乎无法弄清楚将其强制返回初始类型的秘密。解决这个问题的一般方法是显式转换。PageData["Vals"]表达式PageData["Vals"]转换为您期望类型的数组。但是,这对匿名类型不起作用,因为您没有它的类型的句柄,所以不能强制转换它。一旦new[]{...}存储在动态类型的PageData中,所有对匿名类型的编译时引用都会丢失。因此,尝试在其上使用特定于类型的LINQ运算符是不可能的。正如我在评论中提到的,正确的解决方案是始终使用强类型模型。您不应依赖在视图中声明和定义的匿名类型来模拟页面。使页面依赖于真实模型并填充该模型并将其提供给页面。以上就是C#学习教程的全部内容:在ASP.NET网页中使用LINQwithanonymousclassesandimplicitlytypedarrays时出错。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
