J'utilise un Gridview avec la pagination activée. Je lie le girdview dans l'événement Page_Load en utilisant LINQ to XML.Quelle est la meilleure façon de mettre en cache le résultat d'une requête LINQ to XML utilisant des types anonymes? Comment diffuser l'objet de cache?
Le code ressemble à ceci.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Cache["grid"] == null)
{
DataSet ds = new DataSet();
ds.ReadXml(HttpContext.Current.Server.MapPath("~/CarRentalAddress.xml"));
var grid = (from d in ds.Tables[0].AsEnumerable() orderby d.Field<string>("City") where d.Field<string>("Enabled") == "1" select new { City = d.Field<string>("City"), HotelName = d.Field<string>("HotelName"), Address = d.Field<string>("Address"), EmailID1 = d.Field<string>("EmailID1"), EmailID2 = d.Field<string>("EmailID2") }).ToList();
Cache["grid"] = grid;
totalrows = grid.Count().ToString();
grdAddress.DataSource = grid;
grdAddress.DataBind();
}
else
{
var grid = Cache["grid"];
//Extension method Count() is not working here
totalrows = grid.Count().ToString();
grdAddress.DataSource = grid;
grdAddress.DataBind();
}
}
}
La méthode d'extension Count() en partie le reste du code ne fonctionne pas. Je veux savoir la meilleure façon de lancer l'objet cache afin que les méthodes d'extension et tous les trucs LINQ fonctionnent.
lieu de stockage de résultat dans le type anonyme, vous pouvez stocker le résultat dans la classe fortement typée, puis stocké la classe fortement typée dans le cache. –
Si vous avez besoin de code pour cela, faites le moi savoir. –
j'ai essayé aussi. Comment faire pour que toutes les méthodes d'extension LINQ fonctionnent avec mes objets de classe? – getsrirams