Работа с LINQ / HttpContext.Application & WebServices - PullRequest
0 голосов
/ 16 июля 2009

У меня есть следующая функция + код для синтаксического анализа и запроса запроса веб-службы, а затем теоретически сохранить результаты в приложении (поскольку требуется только один раз в день, что, к счастью, происходит при обновлении приложения).

//tocommondata is a reference to the common stuff in the webservice
var dCountries = toCommonData.PropertyCountries; //KeyValuePair
var dRegions = toCommonData.Regions;//Array
var dAreas = toCommonData.Areas;//Array


var commonDAT = (from c in dCountries
                 join r in dRegions on c.Key equals r.CountryCode
                 join a in dAreas on r.Id equals a.RegionId
                 join p in dResorts on a.Id equals p.AreaId
                 select new CommonSave
                 {
                   Key = c.Key,
                   Value = c.Value,
                   Id = r.Id,
                   Name = r.Name,
                   dAreasID = a.Id,
                   dAreasName = a.Name,
                 }
                 ).ToList().AsQueryable();


HttpContext.Current.Application["commonDAT"] = commonDAT;

ЭТОТ Бит отлично работает

foreach (var item in commonDAT)
{
  Response.Write(item.value);

}

** В идеале я хочу вытащить его из appmemory, чтобы я мог получить доступ к данным, где я попробовал различные (возможно, глупые) методы для использования информации. Просто вытащить его вызывает у меня проблемы: o (**

//This Seems to kinda work for at least grabbing it (I'm probably doing this REALLY wrong).
IQueryable appCommonRar = (IQueryable)HttpContext.Current.Application["commonDAT"];


Ответ отмечен (удалите .AsQueryable ()) Быстрый пример

Просто чтобы сделать подробный ответ, быстрый способ повторно запросить и отобразить набор результатов ...

List<CommonSave> appcommon = (List<CommonSave>)HttpContext.Current.Application["commonDAT"];

Response.Write(appcommon.Count()); // Number of responses

var texst = (from xs in appcommon
             where xs.Key == "GBR"
             select xs.dAreasName
             );

foreach (var item in texst)
{
   Response.Write("<br><b>"+item.ToString()+"<b><br>");
}

Надеюсь, кому-нибудь пригодится.

1 Ответ

2 голосов
/ 16 июля 2009

Если вы собираетесь запрашивать его более одного раза, то почему бы просто не оставить его в виде списка? Тип будет List<CommonSave>.

...