2009-07-15 1 views
0

Я пытаюсь вставить некоторые данные в приложение, чтобы затем я мог построить открытый запрос get + linq, чтобы вытащить только биты Я хочу, когда они мне понадобятся.Как хранить массив List ~ в состоянии приложения (C# ASP.net MVC)

Я просто изо всех сил, чтобы сохранить его, а затем, как бы я идти о потянув его обратно, так что я могу запросить против него ...

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; 


} 

ответ

1

Вы можете создать класс, который соответствует данным, и возвращать 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; 
+0

Приветствия не совсем уверен, что делать с ним теперь у меня есть он, но, по крайней мере, загружает: l –

+0

Что вы хотели с этим сделать? –

+0

Я пытаюсь вытащить его, чтобы потом (как ваш пример), потребовать его и вытащить значение или просто вывести все значения. Я не могу добраться до данных. Я попытался получить доступ к нему IQueryable appCommonRar = (IQueryable) HttpContext.Current.Application ["commonRAR"]; Но, как вы, наверное, догадываетесь, я довольно новичок во всем этом материале LINQ/.net3.5/MVC и ужасно колочу в темноте. –

1

Коллекция вы храните это перечисление анонимных типов. Когда вы возвращаете элемент из хранилища 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) 
}