我需要能够根据switch语句更改对象的类型。我想要发生的逻辑如下:
var orig;
switch(ID)
{
case 1:
orig = (List<ReportOne>)Session["Report"];
break;
case 2:
orig = (List<ReportTwo>)Session["Report"];
break;
}
var sort = from o in orig
where o.ID == ReportID
select o;
Session["SortedReport"] = sort.ToList();
但是当我尝试这个时,我必须初始化隐式类型的局部变量。有没有办法可以获得与上述逻辑相同的功能。
答案 0 :(得分:3)
您不能使用Var。编译器必须知道Var的对象类型。
您可以使用的是接口或基类。
如果为两个类或相同的基类分配接口,则可以替换
var orig
与
IEnumerable<baseClass> orig
或者
IEnumerable<iClass> orig
如果您需要List功能,则可以转换IEnumerable.ToList()以实现该功能。
答案 1 :(得分:0)
如果您在报告中添加父界面:
IEnumerable<IReport> orig = Session["Report"] as IEnumerable<IReport>;
if (orig != null)
{
var sort = from o in orig
where o.ID == ReportID
select o;
Session["SortedReport"] = sort.ToList();
}