使用linq查询从列表中筛选

使用linq查询从列表中筛选,linq,filter,Linq,Filter,我正在尝试筛选使用linq查询拉入的列表 [HttpPost] public ActionResult Login(int? Group, int? ListDept, int DivisionID) { LoginViewModel login = new LoginViewModel(); login.GroupID = Group; login.ListDeptID = ListDept; login.D

我正在尝试筛选使用linq查询拉入的列表

 [HttpPost]
    public ActionResult Login(int? Group, int? ListDept, int DivisionID)
    {

        LoginViewModel login = new LoginViewModel();

        login.GroupID = Group;
        login.ListDeptID = ListDept;
        login.DivisionID = DivisionID;

        if(Group == 17)
        {
            Session["Login"] = login;
            return  RedirectToAction("Index");
        }
           var roleGroupmap = new List<string>
        {
            {"Role1"},
           {"Role2"},
           {"Role3"}
    };

        var grouplist = new List<Group>();

        foreach(var role in roleGroupmap)
        {
            if(User.IsInRole(role))
            {
                grouplist.Add(CheckLogin.CheckGroup(role));
            }
        }
                 login.Groups = grouplist;
        Session["Login"] = login;
        return RedirectToAction("Index", "Case");
    }

    public class CheckLogin
{
    public static Group CheckGroup(string role)
    {
        Group group = new Group();

        switch (role)
        {
            case "Role1":
                group.Name = "Group1";
                group.ID = 1;
                break;
            case "Role2":
                group.Name = "Group2";
                group.ID = 2;
                break;
            case "Role3":
                group.Name = "Group3";
                group.ID = 3;
                break;


        }

        return group;
    }

}

 public class LoginViewModel
{
    public int ID { get; set; }
    public Nullable<int> GroupID { get; set; }
    public Nullable<int> ListDeptID { get; set; }
    public int DivisionID { get; set; }
    public ICollection<Group> Groups { get; set; }
    public virtual Group Group { get; set; }
    public virtual ListDept ListDept { get; set; }
}
[HttpPost]
公共操作结果登录(int?Group、int?ListDept、int DivisionID)
{
LoginViewModel login=新建LoginViewModel();
login.GroupID=Group;
login.ListDeptID=ListDept;
login.DivisionID=DivisionID;
如果(组==17)
{
会话[“登录”]=登录;
返回操作(“索引”);
}
var roleGroupmap=新列表
{
{“Role1”},
{“Role2”},
{“Role3”}
};
var grouplist=新列表();
foreach(角色组映射中的var角色)
{
if(User.IsInRole(角色))
{
添加(CheckLogin.CheckGroup(角色));
}
}
login.Groups=grouplist;
会话[“登录”]=登录;
返回重定向操作(“索引”、“案例”);
}
公共类CheckLogin
{
公共静态组检查组(字符串角色)
{
组=新组();
交换机(角色)
{
案例“角色1”:
group.Name=“Group1”;
组ID=1;
打破
案例“角色2”:
group.Name=“Group2”;
组ID=2;
打破
案例“角色3”:
group.Name=“Group3”;
组ID=3;
打破
}
返回组;
}
}
公共类LoginView模型
{
公共int ID{get;set;}
公共可为空的GroupID{get;set;}
公共可空ListDeptID{get;set;}
public int DivisionID{get;set;}
公共ICollection组{get;set;}
公共虚拟组{get;set;}
公共虚拟ListDept ListDept{get;set;}
}
到我试图筛选的索引页

    CaseListViewModel cases = new CaseListViewModel();
   cases.OpenCases = db.Cases.Where(c => c.StatusID == 1 && c.AssignedTo == emailAddr || login.DivisionID == c.DivisionID);

public class CaseListViewModel
{
    public IEnumerable<Case> OpenCases { get; set; }
    public IEnumerable<Case> ClosedCases { get; set; }


}

  public class Group
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Nullable<bool> Active { get; set; }
    public ICollection<Case> Cases { get; set; }

}
CaseListViewModel案例=新的CaseListViewModel();
cases.OpenCases=db.cases.Where(c=>c.StatusID==1&&c.AssignedTo==emailAddr | | login.DivisionID==c.DivisionID);
公共类CaseListViewModel
{
公共IEnumerable OpenCases{get;set;}
公共IEnumerable ClosedCases{get;set;}
}
公共课组
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共可空活动{get;set;}
公共ICollection案例{get;set;}
}
我将如何添加到此查询以筛选列表中的查询?任何帮助都将不胜感激

谢谢,
亚当你可以用这样的东西

var groupIds = login.Groups.Select(g => g.Id).ToList();
cases.OpenCases = db.Cases.Where(c => (
    c.StatusID == 1 && c.AssignedTo == emailAddr || login.DivisionID == c.DivisionID)
    && groupIds.Contains(c.GroupId));

名单上有什么?对不起,我应该说得更具体些。我已经用上面的模型更新了代码,以显示我正在尝试做什么。谢谢你,但是你也可以把什么放在
db.Cases
-我想应该是
Case
,但是是什么字段。我假设您想按
登录.Groups
中的内容进行筛选,因此显示
Group
类也会有所帮助。只需更新代码即可显示这些内容。再次感谢如果我理解正确,您希望只包括与
登录.Groups
相关的案例(以及其他过滤器)?您的
案例
类包含一个属性
GroupId