Как сохранить список ~ массив в состоянии приложения (C # ASP.net MVC) - PullRequest
0 голосов
/ 15 июля 2009

Я пытаюсь вставить некоторые данные в приложение, чтобы потом можно было создать публичную строку запроса 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;


}

Ответы [ 2 ]

1 голос
/ 15 июля 2009

Вы можете создать класс, соответствующий данным, и вернуть IQueryable<T> этого класса:

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;
1 голос
/ 15 июля 2009

Коллекция, которую вы храните, представляет собой перечисление анонимных типов. При извлечении предмета из хранилища Application [] вам нужно будет привести его к IEnumerable<TYPE>, но, поскольку он анонимный, вы не можете этого сделать.

Лучшее, что вы можете сделать, это привести его к 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)
}
...