PartialView使用LINQ传递自定义列表

本文关键字:自定义 列表 使用 LINQ PartialView | 更新日期: 2023-09-27 18:09:11

我有2个数据库使用EF w/MVC4。我已经找遍了所有的地方。我需要将警报列表返回给局部视图。但是,警报应该由具有特定标识符的特定用户名过滤。视图是强类型的,我希望它保持这种状态。

我有LINQ查询返回到一个列表,它是与特定id关联的用户名列表。在第二个case语句中,您可以看到需要进行两个表查找的位置。我想在没有视图模型类的情况下做到这一点。

代码如下:

    public PartialViewResult DashboardAlerts()
    {
        Database.SetInitializer<AlertsContext>(null);
        AlertsContext db = new AlertsContext();
        Database.SetInitializer<MemberUsersContext>(null);
        MemberUsersContext mdb = new MemberUsersContext();
        var members = new List<MemberUsers>(mdb.MemberUsers);
        var alerts = new List<Alerts>(db.Alerts);
        var query = from x in alerts
                    join y in members
                    on x.username equals y.username
                    where y.clubID == (int)Session["ClubID"]
                    select new { username = y.username};
        var list = query.ToList();
        switch (Session["RoleName"].ToString())
        {
            case "GMC Admin": return PartialView(db.Alerts.ToList());
            case "Club Admin": return //return db.Alerts.ToList() that has only usernames from query.ToList();
            default: return PartialView(db.Alerts.Where(x => x.username == User.Identity.Name).ToList());
        }
    }

底线:我想交叉引用db。

PartialView使用LINQ传递自定义列表

根据您的问题,您可以使用want将警报缩小到查询中包含用户名的警报。看起来您已经完成了,只是不选择用户名,而是选择警报

var query = from x in alerts
                join y in members
                on x.username equals y.username
                where y.clubID == (int)Session["ClubID"]
                select x;

,它将返回警报而不是用户名列表。