根据开关设置var

时间:2014-09-16 14:10:04

标签: c# switch-statement var

我需要能够根据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();

但是当我尝试这个时,我必须初始化隐式类型的局部变量。有没有办法可以获得与上述逻辑相同的功能。

2 个答案:

答案 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();
}