这是我的代码
var personalInfoQuery = from t in crnnsupContext.Tombstones.Include("ProvState")
join n in crnnsupContext.NursingSchools
on t.NursingSchool equals n.SchoolID
where t.RegNumber == _username
select new { t, n };
然后我尝试将personalInfoQuery放入像
这样的列表中List<> personalInfoResult = personalInfoQuery.ToList();
但如何在列表中表示匿名类型?
我需要将其插入缓存中
所以Cache.Insert("personalInfo", personalInfoQuery.ToList())
然后Cache["personalInfo"] becomes an object, how can i read data from it?
答案 0 :(得分:3)
这正是var
关键字的用途。
所以而不是:
List<> personalInfoResult = personalInfoQuery.ToList();
使用它:
var personalInfoResult = personalInfoQuery.ToList();
编译器将自己确定确切的类型,您不需要指定任何内容。这绝不是不安全的,即使你没有定义类型,它仍然是100%打字的。
答案 1 :(得分:3)
由于您的类型需要由多个方法使用(它需要由一个方法创建并由另一个方法读取),因此使用匿名类型是不合适的。只需创建一个简单的类型:
public class TombstoneNursingSchool
{
public Tombstone Tombstone { get; set; }
public NursingSchool NursingSchool { get; set; }
}
像这样创建:
var personalInfoQuery = from t in crnnsupContext.Tombstones.Include("ProvState")
join n in crnnsupContext.NursingSchools
on t.NursingSchool equals n.SchoolID
where t.RegNumber == _username
select new TombstoneNursingSchool {
Tombstone = t,
NursingSchool = n
};
制作一个这样的清单:
List<TombstoneNursingSchool> personalInfoResult = personalInfoQuery.ToList();
将它放在缓存中,如下所示:
Cache.Insert("personalInfo", personalInfoQuery.ToList())
从缓存中取出并按如下方式阅读:
foreach(var tn in (List<TombstoneNursingSchool>)Cache["personalInfo"])
{
// do something with tn.Tombstone and tn.NursingSchool
}
匿名类型在单个方法中很方便,但它们不适合每个情况。如果您需要,请不要害怕制作命名类型。