尝试转换匿名对象时出错,Razor我正在尝试转换匿名对象数组,其中每个对象如下所示:new{type="internal",title="Linktitle",target="_blank",link="http://www.google.se"}我已经声明了一个类“Link”,它应该被转换成一个匿名对象类Link{publicstringtype{get;set;}publicstringtarget{get;set;}publicstringtitle{get;set;}publicstringlink{get;set;}}现在我正在尝试像这样投射对象Listlinks=Model.relatedLinks。Select(l=>newLink{type=l.type,target=l.target,title=l.title,link=l.link}).ToList();然后我收到错误Cannotusealambdaexpressionasargumenttoadynamicaldispatchedoperationwithoutfirstcastingittoadelegateorexpressiontreetype我找到了这个关于如何转换匿名对象的页面,但我也是这样做的。或者我错过了什么?如果relatedLinks本身是一个动态值,那么您会遇到两个问题:您可以通过强制转换lambda表达式来解决第一个问题。您可以通过直接调用Enumerable.Select来绕过第二个://注意:不要在此处使用var。我们需要来自//dynamicIEnumerablequery=Enumerable.Select(Model.relatedLinks,(Func)(l=>newLink{type=l.type,target=l.target,title=l.title,link=l.link});varlinks=query.ToList();或格式化:Funcprojection=l=>newLink{type=l.type,target=l.target,title=l.title,link=l.link};IEnumerablequery=Enumerable.Select(Model.relatedLinks,projection);varlinks=query.ToList();如果Model.relatedLinks已经是IEnumerable(或类似的东西),那么您可以调用Select作为扩展方法-但是你仍然需要一个强类型的委托。比如后面的版本会变成:以上是C#学习教程:errorwhentryingtocastanonymousobject,Razor分享的所有内容,如果对大家有用还需要详细了解C#学习教程,我希望大家多多关注—Funcprojection=l=>newLink{type=l.type,target=l.target,title=l.title,link=l.link};IEnumerablequery=Model.relatedLinks.Select(projection);变种链接=查询。列表();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
