添加到通用List属性并保存在viewstate中

时间:2011-11-30 02:55:51

标签: c# linq generics properties viewstate

我正在使用通用List在viewstate中存储一组数据。如果我尝试在get访问器中使用linq对列表进行排序,那么当我尝试将新项添加到列表中时如果不起作用。没有错误,它只是没有将它添加到列表中。

当我运行这行代码时:

MyObjectList.Add(new MyObject());



使用此属性不起作用:

public List<MyObject> MyObjectList
{
   get
   {
      if (ViewState["MyObjectList"] == null)
         ViewState["MyObjectList"] = GetDataFromDataBase();
      return ((List<MyObject>)ViewState["MyObjectList"]).OrderBy(x => x.MyObjectID).ToList();
   }
}



但是使用这个属性确实(虽然现在我必须在获得后每次排序):

public List<MyObject> MyObjectList
{
   get
   {
      if (ViewState["MyObjectList"] == null)
         ViewState["MyObjectList"] = GetDataFromDataBase();
      return (List<MyObject>)ViewState["MyObjectList"];
   }
}



我该如何对get访问器中的数据进行排序?

1 个答案:

答案 0 :(得分:3)

.ToList创建列表的副本。您正在添加该内容而不是原始列表。