【发布时间】:2013-11-24 16:20:25
【问题描述】:
这是在使用 EF 的 C# ASP.NET MVC 4 中。我有一个表Users,其中Portfolio 对象定义为其属性之一,Username 对象定义为另一个。 Razor 中的 User.Identity.Name 让我可以在用户登录后将用户名传递给我的控制器。User 在表中的 Portfolio 对象中有一个 Portfolio_Id。我要做的是获得User 的Portfolio_Id,而我只需要购买Username。在下面的代码中,您会看到我有一个var protfolioId。我的问题是,当我需要它只是和 int 时,它被我的 LINQ 设置为 IQueryable<int>。我可能错了,但这是否意味着它是一个集合而不是单个值?我怎样才能只获得User 的Portfolio_Id,其Username 与我传递给操作的内容相匹配?
public ActionResult Index([Bind(Prefix="id")]string userName)
{
//find the user
var user = _db.Users
.Where(u => u.UserName == userName)
.Select(u => new User
{
Id = u.Id,
UserName = u.UserName,
FirstName = u.FirstName,
LastName = u.LastName,
Email = u.Email,
Portfolio = u.Portfolio
});
//find the users portfolio id
var portfolioId = user.Select(u => u.Portfolio.Id);
//find their portfolio
var portfolio = _db.Portfolios.Find(portfolioId);
if(portfolio == null)
{
return HttpNotFound();
}//end of if
return View(portfolio);
}//end of Index
【问题讨论】:
标签: c# asp.net asp.net-mvc linq entity-framework