从this C# MVC tutorial改编我使用以下语句将特定用户返回到视图
User user = db.Users.Find(id);
if (user == null){return HttpNotFound();}
return View(user);
Users
模型具有Auctions
的外键,因此视图可以迭代与此用户关联的拍卖列表。
Auctions
有一个名为buyerID
的字段,与User.ID
对应,因此我希望通过User.userName
链接回Auctions.buyerID
来显示买方名称}。
我可以在SQL语句和LINQ中执行此操作,但我认为有一种更简单的方法。
如何使用User user = db.Users.Find(id);
并使用User
的外键将其加入Auctions.buyerID
?
这是我认为可行的,但我无法创建新参数' buyerName'当用户没有这个时。
IEnumerable<User> thisUser = from usr in db.Users
join auct in db.Auctions on usr.ID equals auct.UserID
join ur in db.Users on auct.buyerID equals ur.ID
where usr.ID == id
select new User
{
buyerName = ur.userName
};
来自其他帖子like this one我读过有关设置新课程的内容,但似乎并没有坚持干嘛和KISS原则从现在开始我需要有两个类,它们由位于不同位置的一个参数改变。
是否有更简单的方法来加入表格并获得强类型而无需创建新类?
因此结果应显示买方名称而不是买方ID#
答案 0 :(得分:0)
由于我想避免使用匿名类型而且我不想创建新类,因此通过将用户名字典传递给视图找到了解决方法。
控制器
User user = db.Users.Find(id);
var dict = db.Users.Select(t => new { t.ID, t.userName })
.ToDictionary(t => t.ID, t => t.userName);
ViewData["userDict"] = dict;
现在我只根据买家ID
查找用户名查看
@{Dictionary<int, String> userList = ViewData["userDict"] as Dictionary<int, String>;}
@{
if (item.buyerID.HasValue)
{
@Html.DisplayFor(modelItem => userList[item.buyerID.Value])
}
}