C# 使用两个不同视图的结果集(来自if语句)

C# 使用两个不同视图的结果集(来自if语句),c#,asp.net-mvc,model-view-controller,asp.net-mvc-2,C#,Asp.net Mvc,Model View Controller,Asp.net Mvc 2,我有一段代码可以处理一个名为result original的结果集,我知道,但根据传入的变量,我想根据具体情况启动特定的查询。我在if语句中有下面的内容,但这只会使结果记录集出现那些讨厌的红线,并且它不起作用。我相信这很容易解决 if (area == "dashboard") { IQueryable<ViewGetNavigationMainItem> result = (from m in _entities.ViewG

我有一段代码可以处理一个名为result original的结果集,我知道,但根据传入的变量,我想根据具体情况启动特定的查询。我在if语句中有下面的内容,但这只会使结果记录集出现那些讨厌的红线,并且它不起作用。我相信这很容易解决

 if (area == "dashboard")
     {
         IQueryable<ViewGetNavigationMainItem> result = (from m in 
             _entities.ViewGetNavigationMainItems
             where m.area.Trim() == area.Trim()
             where m.state == "Online"
             where m.parentID == parentID
             orderby m.sequence ascending
             select m);            
     }
 else
     {
         //Get the Content Items
         IQueryable<ViewGetNavigationContentItem> result = (from m in 
             _entities.ViewGetNavigationContentItems
             where m.navID == navID
             where m.parentID == parentID
             orderby m.contentOrder ascending
             select m);
     }
maxRecords = result.Count();

 foreach (var item in result)
 {
     //do something
 }
注意:您可以使用&&而不是多个where

首先,在if之前将result定义为c4.0中两种结果类型的基类或接口的IQueryable或可枚举的。您可以创建这样的基类。假设ViewGetNavigationMainItem和ViewGetNavigationContentItem的唯一公共基类是Object:


在代码中,检查计数时,结果不在范围内,因为它在if和else中声明

您需要将结果声明移到if之上,并将其声明为两个结果都是,例如IEnumerable

如果你只想数一数,那就是

如果你想做更多的事情,考虑创建一个模型,你可以选择两个结果,例如

class ResultModel{
 int Id{get;set;}
 string Display{get;set;}
}

你的问题到底是什么?
foreach (object item in result)
                        { etc etc etc
class ResultModel{
 int Id{get;set;}
 string Display{get;set;}
}