在对象列表上循环 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)
{
}
我正在尝试将一些对象保存到列表中供以后使用。以下是我如何存储它们:
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)
{
}