System.Collections.Generic.IEnumerable' 不包含“ToList”的任何定义
Posted
技术标签:
【中文标题】System.Collections.Generic.IEnumerable\' 不包含“ToList”的任何定义【英文标题】:System.Collections.Generic.IEnumerable' does not contain any definition for 'ToList'System.Collections.Generic.IEnumerable' 不包含“ToList”的任何定义 【发布时间】:2013-03-26 15:04:24 【问题描述】:这就是问题所在。我从 ViewPage 获取 IEnumerable ,当我尝试将它转换为 List 时,它向我显示如下错误:
'
System.Collections.Generic.IEnumerable<Pax_Detail>
'不包含 'ToList' 的定义并且没有扩展方法 'ToList' 接受 类型的第一个参数 'System.Collections.Generic.IEnumerable<Pax_Detail>
' 可以找到 (您是否缺少 using 指令或程序集引用?)
这是我的控制器代码:
[HttpPost]
public ActionResult Edit_Booking(Booking model, IEnumerable<Pax_Detail> pax)
List<Pax_Detail> paxList = new List<Pax_Detail>();
paxList = pax.ToList(); //getting error here
BookingDL.Update_Booking(model, paxList);
return View();
我在另一个控制器上应用了相同的逻辑。它工作正常。我不知道它有什么问题。我已经清理、重建项目并重新启动了我的笔记本电脑(尽管它是必需的)。
【问题讨论】:
你引用过System.Core.dll
吗?
附带说明,在使用pax.ToList()
覆盖下一行时避免= new List<Pax_Detail>()
,因为未使用的内存是通过这种方式分配的
【参考方案1】:
在我的例子中,我从另一个使用 Automapper 的项目中复制了一些代码 - 我花了很长时间才解决这个问题。只需将 automapper nuget 包添加到项目中。
【讨论】:
【参考方案2】:我缺少 System.Data.Entity dll 引用,问题已解决
【讨论】:
【参考方案3】:添加 LINQ 的替代方法是使用以下代码:
List<Pax_Detail> paxList = new List<Pax_Detail>(pax);
【讨论】:
如果您在调试缺少指令的文件时尝试在即时窗口中执行此操作,则非常有用。 当我尝试这个时,pax 的任何变化也会反映在 paxList 中!【参考方案4】:您缺少对 System.Linq 的引用。
添加
using System.Linq
访问当前代码文件中的 ToList() 函数。
为了说明为什么这是必要的,Enumerable.ToList<TSource>
是一种扩展方法。扩展方法是在它所针对的原始类之外定义的。在这种情况下,扩展方法是在System.Linq
命名空间上定义的。
【讨论】:
【参考方案5】:您是否缺少 System.Linq
的 using 指令?
http://msdn.microsoft.com/en-us/library/bb342261.aspx
【讨论】:
哦,谢谢。我没有在我的项目中使用 Linq,但我认为在这种情况下需要它。 我建议使用 resharper。它非常擅长发现这样的事情,并会提示您添加 using 指令。 @AndyNichols 该功能已经隐含在 Visual Studio 中。也许不是在 2013 年 :)以上是关于System.Collections.Generic.IEnumerable' 不包含“ToList”的任何定义的主要内容,如果未能解决你的问题,请参考以下文章