如何在应用程序状态(C#ASP.net MVC)下存储List~Array

如何在应用程序状态(C#ASP.net MVC)下存储List~Array,c#,asp.net-mvc,.net-3.5,linq-to-objects,C#,Asp.net Mvc,.net 3.5,Linq To Objects,我正在尝试将一些数据粘贴到应用程序中,这样我就可以构建一个公共字符串get+linq查询,以便在需要时提取出我想要的数据 我只是在努力储存它,然后我会如何把它拿出来,这样我就可以对它进行查询 public void CommonDatatoApp() { CDataResponse cCommonData = this.GatewayReference.GetCommonData(); var dCountries = cCommonData.PropertyCountries; //

我正在尝试将一些数据粘贴到应用程序中,这样我就可以构建一个公共字符串get+linq查询,以便在需要时提取出我想要的数据

我只是在努力储存它,然后我会如何把它拿出来,这样我就可以对它进行查询

public void CommonDatatoApp() 
{
  CDataResponse cCommonData = this.GatewayReference.GetCommonData();
  var dCountries = cCommonData.PropertyCountries; //KeyValue
  var dRegions = cCommonData.Regions; //Array
  var dAreas = cCommonData.Areas; //Array
  var dResorts = cCommonData.Resorts; //Array

  var commonRAR = (from c in dCountries
                   join r in dRegions on c.Key equals r.CountryCd
                   join a in dAreas on r.Id equals a.RegionId
                   select new { c.Key, c.Value, r.Id, r.Name, dAreasID = a.Id, dAreasIDName = a.Name}
                  );


  HttpContext.Current.Application["commonData"] = commonRAR;


}

您存储的集合是匿名类型的枚举。从应用程序[]存储区检索项目时,必须将其强制转换为
IEnumerable
,但由于它是匿名的,因此无法执行此操作

您最好将其强制转换为
IEnumerable
,但这是非类型化的可枚举接口

例如:

IEnumerable myList = (IEnumerable) HttpContext.Current.Application["commonData"];

foreach (object obj in myList)
{
   // do something with obj (but that will be hard, because it is of 
   // an anonymous type)
}

您可以创建与数据匹配的类,并返回该类的
IQueryable

public class SaveMe { 
   public string Key {get;set}
   public string Value {get;set;}
   public int Id {get;set;}
   public string Name {get;set;}
   public int dAreasID {get;set;}
   public string dAreasIDName {get;set;}
}

  var commonRAR = (from c in dCountries
                   join r in dRegions on c.Key equals r.CountryCd
                   join a in dAreas on r.Id equals a.RegionId
                   select new SaveMe {
                      Key= c.Key, 
                      Value = c.Value, 
                      Id = r.Id, 
                      Name = r.Name, 
                      dAreasID = a.Id, 
                      dAreasIDName = a.Name
                    }
                  );


  HttpContext.Current.Application["commonData"] = commonRAR;

Cheers不太确定该怎么处理现在我有了它,但至少它加载了:L你想用它做什么?我正在尝试拉出它,这样我就可以(非常像你的示例)重新查询它并拉出一个值或只是输出所有的值。我找不到数据。我尝试访问它IQueryable appCommonRar=(IQueryable)HttpContext.Current.Application[“commonRAR”];但正如你可能猜到的那样,我对LINQ/.net3.5/MVC这类东西还很陌生,而且我在黑暗中疯狂地刺伤