编程语言
首页 > 编程语言> > c#-添加到通用List属性并保存在viewstate中

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

作者:互联网

我正在使用通用列表在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访问器中的数据进行排序?

解决方法:

.ToList创建列表的副本.您要添加到该列表而不是原始列表.

标签:properties,generics,viewstate,linq,c
来源: https://codeday.me/bug/20191202/2085349.html