在对象列表上循环 foreach(不能对 'object' 类型的变量进行操作)

Loop foreach over List of objects (cannot operate on variables of type 'object')

我正在尝试将一些对象保存到列表中供以后使用。以下是我如何存储它们:

List<Engagement> engagementsList = new List<Engagement>();

foreach (Engagement engagement in db.Engagements)
{
    // Implementation here
}

TempData["DeletedE"] = engagementsList;
TempData.Keep();

然后,我尝试遍历列表,但出现错误:

不能对'object'

类型的变量进行操作

我正在通过以下方式遍历列表:

foreach (Engagement e in TempData["DeletedE"])
{
    // Implementation here...
}

非常感谢任何帮助。

将循环更改为:

foreach (Engagement e in TempData["DeletedE"].Cast<Engagement>())
{   
}

MVC's TempData[] indexer returns an object,您不能对其进行迭代。

您需要将其转换为您存储在其中的同一类型:

foreach (var engagement in (List<Engagement>)TempData["DeletedE"])
{
}

这在how to access an array element from tempdata中也有解释。

由于TempData["DeletedE"]object类型,所以不能枚举。

为此,您必须像这样将其转换为 IEnumerable<Engagement>

var enumerable = TempData["DeletedE"] as IEnumerable<Engagement>;

foreach (Engagement e in enumerable)
{

}