System.Collections.Generic.IEnumerable”不包含“ ToList”的任何定义


80

这是问题所在。我从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吗?
怠惰

7
作为旁注,请避免= new List<Pax_Detail>()在使用覆盖下一行时pax.ToList(),因为未分配的内存是通过这种方式分配的
pascalhein 2013年

Answers:



26

您缺少对System.Linq的引用。

using System.Linq

获取对当前代码文件中的ToList()函数的访问。


提供一些信息说明为什么需要这样做Enumerable.ToList<TSource>是一种扩展方法。扩展方法是在它所针对的原始类之外定义的。在这种情况下,扩展方法是在System.Linq名称空间上定义的。


7

添加LINQ的替代方法是使用以下代码:

List<Pax_Detail> paxList = new List<Pax_Detail>(pax);

如果您在调试缺少指令的文件时尝试在“即时窗口”中执行此操作,则超级有用。
丹·菲尔德

当我尝试此操作时,pax的任何更改也会反映在paxList中!
马丁


0

就我而言,我已经从另一个使用Automapper的项目中复制了一些代码-花了我很长时间才能解决这个问题。只需向项目添加automapper nuget包。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.