var
est juste court-main pour l'inférence de type ... la vraie question ici est: quel est le type sous-jacent?
Si elle implique un type anonyme (à savoir nouveau {...}, ou List<>
y-de), alors il n'y a pas manière élégante (bien qu'il puisse se faire de manière hacky). En bref; ne pas utiliser des types anonymes dans ce scénario ...
Notez qu'une expression de requête tels que IQueryable<T>
ne données - est une requête - pour stocker les données (pour un cache) que vous auriez besoin à utiliser .ToList()
/.ToArray()
etc.
Important: vous ne devriez pas stocker une expression de requête en session; au mieux (fournisseur de session en mémoire) qui maintiendra le contexte de données en vie; au pire (fournisseur de session de base de données etc) cela ne fonctionnera pas, car un contexte de données n'est pas sérialisable. Stockage résultats à partir d'une requête est très bien; mais sinon, reconstruisez l'expression de requête par requête.
Dans ce cas, vous pourriez être en mesure d'utiliser (par exemple):
var tasksQuery = from task in ctx.Tasks
where task.IsActive
orderby task.Created
select task; // this is IQueryable<Task>
Session["Tasts"] = tasksQuery.ToArray(); // this is Task[]
...
var tasks = (Task[]) Session["Tasts"]; // this is Task[]
Je pensais que cela pourrait être quelque chose dans le style de .ToList() puis de mettre cela dans la session. La note sur la conservation du contexte de données était intéressante. Merci pour ça :) –