Asp.net 如何获取LINQ缓存对象的对象字段?

Asp.net 如何获取LINQ缓存对象的对象字段?,asp.net,linq,Asp.net,Linq,在Application_Start中,我将通过LINQ获得的一些对象缓存到SQL中 objDataContext objBetting = new objDataContext(); var testObjects= from element in objBetting.Elements select new { element.attribute }; HttpRuntime.Cache["test"] = testObjects

在Application_Start中,我将通过LINQ获得的一些对象缓存到SQL中

    objDataContext objBetting = new objDataContext();
    var testObjects= from element in objBetting.Elements
                   select new { element.attribute };
    HttpRuntime.Cache["test"] = testObjects;
在某个页面上,我想读取值testObject.attribute。我只能:

   var objS = (IQueryable)Cache["test"];
我缓存匿名类型的对象,如何获取属性,也许这是一个更好的问题。



好的,我将创建并填充System.Data.Linq.Table类型的对象,并将其缓存,以便能够强制转换。

不要缓存可查询的对象。它们是惰性评估的,并且(1)读取缓存时上下文不存在的可能性很高,因此枚举它将失效,(2)它不可序列化,因此无法使用分布式缓存

如果必须缓存某个列表,请将其放入基本类型数组中。

HttpRuntime.cache[“test”]=testObject.ToList();
HttpRuntime.Cache["test"] = testObject.ToList();

IList<string> attributes = (IList<string>)Cache["test"];
IList属性=(IList)缓存[“测试”];
什么?你想干什么?无法获取testObjects.attribute的值。什么类型的对象是
attribute
?attribute是string,testObjects是linq result对象,它具有字段属性(string)。我需要读取属性的值。我缓存整个对象,我需要遍历foreach(getObjects中的var o),但我没有o.attribute。这是一个问题。你的头像刚刚在我的早晨出现。我想缓存对象、LINQ查询的结果以及读取属性。你可以缓存对象,只要它们是可序列化的。但是,您不能缓存查询。