C# 在对象列表上循环foreach(无法对对象类型为';的变量进行操作)
我正在尝试将一些对象保存到列表中以供以后使用。以下是我存储它们的方式:C# 在对象列表上循环foreach(无法对对象类型为';的变量进行操作),c#,list,object,foreach,tempdata,C#,List,Object,Foreach,Tempdata,我正在尝试将一些对象保存到列表中以供以后使用。以下是我存储它们的方式: List<Engagement> engagementsList = new List<Engagement>(); foreach (Engagement engagement in db.Engagements) { // Implementation here } TempData["DeletedE"] = engagementsList; TempData.Keep(); 非常
List<Engagement> engagementsList = new List<Engagement>();
foreach (Engagement engagement in db.Engagements)
{
// Implementation here
}
TempData["DeletedE"] = engagementsList;
TempData.Keep();
非常感谢您的帮助。将您的循环更改为:
foreach (Engagement e in TempData["DeletedE"].Cast<Engagement>())
{
}
foreach(TempData[“DeletedE”].Cast()中的交战e)
{
}
将循环更改为:
foreach (Engagement e in TempData["DeletedE"].Cast<Engagement>())
{
}
foreach(TempData[“DeletedE”].Cast()中的交战e)
{
}
,您无法对其进行迭代
您需要将其强制转换为存储在其中的相同类型:
foreach (var engagement in (List<Engagement>)TempData["DeletedE"])
{
}
foreach(风险值参与(列表)TempData[“DeletedE”])
{
}
这也在中进行了解释。,您不能在上面进行迭代
您需要将其强制转换为存储在其中的相同类型:
foreach (var engagement in (List<Engagement>)TempData["DeletedE"])
{
}
foreach(风险值参与(列表)TempData[“DeletedE”])
{
}
由于TempData[“DeletedE”]
属于对象类型,因此无法枚举它
为此,必须将其强制转换为IEnumerable
,如下所示:
var enumerable = TempData["DeletedE"] as IEnumerable<Engagement>;
foreach (Engagement e in enumerable)
{
}
var enumerable=TempData[“DeletedE”]作为IEnumerable;
foreach(参与可枚举项目)
{
}
由于TempData[“DeletedE”]
属于对象类型,因此无法枚举它
为此,必须将其强制转换为IEnumerable
,如下所示:
var enumerable = TempData["DeletedE"] as IEnumerable<Engagement>;
foreach (Engagement e in enumerable)
{
}
var enumerable=TempData[“DeletedE”]作为IEnumerable;
foreach(参与可枚举项目)
{
}
没有Cast()
扩展方法可以在对象上运行。哦,我明白了,不清楚TempData是什么类型,所以您必须先对其进行强制转换。现在有一些正确的答案没有对object
有效的Cast()
扩展方法。哦,我明白了,不清楚TempData是什么类型,所以您必须先对它进行强制转换。现在有一些正确的答案虽然这应该可以工作,但我在for循环中遇到一个错误:“对象引用未设置为对象的实例。”-我想你不知道为什么会发生这种情况?无意冒犯,但请尝试搜索。这意味着某个东西是null
,我怀疑TempData[“DeletedE”]
就是它。请记住TempData
仅在一个重定向或一个控制器视图事务期间保留其值。未执行任何操作,我一直在调试它,无法找出它,因此我认为可能是我忽略了某些内容,是的,Temp数据已作为null传递。如果您感兴趣,我决定改用一个会话,现在一切都正常了:)虽然这应该可以工作,但我在for循环中遇到了一个错误:“对象引用未设置为对象的实例。”-我想你不知道为什么会发生这种情况?无意冒犯,但请尝试搜索。这意味着某个东西是null
,我怀疑TempData[“DeletedE”]
就是它。请记住TempData
仅在一个重定向或一个控制器视图事务期间保留其值。未执行任何操作,我一直在调试它,无法找出它,因此我认为可能是我忽略了某些内容,是的,Temp数据已作为null传递。如果您感兴趣,我决定改用一个会话,现在一切都正常了:)我如何将元素“添加”到此IEnumerable中?如果需要添加项,请转换为IList
或List
,而不是IEnumerable
您不想修改视图中的模型属性。我如何将元素“添加”到此IEnumerable中?如果需要添加项,然后强制转换到IList
或List
,而不是IEnumerable
您不想修改视图中的模型属性。