【问题标题】:how to loop through a session object which is a list如何遍历作为列表的会话对象
【发布时间】:2014-03-27 17:05:44
【问题描述】:

我有一个会话对象,其中包含一个对象列表..

Session.Add("errorlist",errorlist);

现在我想在另一个函数中循环遍历这个错误列表。我试过了,但它给出了以下错误:

foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'

这是我尝试过的:

var error = Session["errorlist"];
foreach (var item in error)
{
    //Something here
}

我可以在“错误”变量中看到一个对象列表。

【问题讨论】:

  • Sessionerror的类型有哪些?
  • errorlist 的数据类型是什么?你是怎么声明的?

标签: c# list asp.net-mvc-4 session


【解决方案1】:

默认情况下,进入会话的所有内容都是System.Object 类型。因此,您的 var 语句将没有正确的类型。

你需要在退出会话时施放它。

var error = (List<MyObject>)Session["errorlist"];

更好的方法是使用安全强制转换并检查 null:

var error = Session["errorlist"] as List<MyObject>;

if(error != null){
   //Do stuff here
}

【讨论】:

  • 如果使用 foreach 进行迭代是 OP 想要对 error 做的所有事情,那么尝试转换为通用接口 IEnumerable&lt;MyObject&gt; 可能仍然比非常具体的类型更安全一些List&lt;MyObject&gt;.
  • @O.R.Mapper - 同意。除非您打算使用最通用的界面来修改集合,否则总是最好的。
猜你喜欢
  • 2019-11-25
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 2023-03-04
  • 2019-08-08
相关资源
最近更新 更多