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。
根据您的问题,您可以使用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;
,它将返回警报而不是用户名列表。