如何使用Linq从C#ASP.NET MVC 4中的IQueryable中找到一个值?
这是在C#ASP.NETMVC4中使用EF实现的。我有一个表如何使用Linq从C#ASP.NET MVC 4中的IQueryable中找到一个值?,c#,asp.net,asp.net-mvc,linq,entity-framework,C#,Asp.net,Asp.net Mvc,Linq,Entity Framework,这是在C#ASP.NETMVC4中使用EF实现的。我有一个表Users,其中Portfolio对象定义为它的一个属性,Username作为另一个属性。Razor中的User.Identity.Name允许我在用户登录后将用户名传递给我的控制器。用户在Portfolio对象的表中有一个Portfolio\u Id。我想做的是获得用户的投资组合Id,而我只需要购买用户名。在下面的代码中,您可以看到我有一个var-protofolioid。我的问题是,当我需要它为be和int时,它从我的LINQ设置为
Users
,其中Portfolio
对象定义为它的一个属性,Username
作为另一个属性。Razor中的User.Identity.Name
允许我在用户登录后将用户名传递给我的控制器。用户
在Portfolio
对象的表中有一个Portfolio\u Id
。我想做的是获得用户的投资组合Id
,而我只需要购买用户名
。在下面的代码中,您可以看到我有一个var-protofolioid
。我的问题是,当我需要它为be和int时,它从我的LINQ设置为IQueryable
。我可能错了,但这是否意味着它是一个集合而不是单个值?如何为用户
获取公文包Id
,该用户的用户名
与我传递到操作中的内容匹配
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
如果你想返回一个特定数据类型中的特定值,比如说int,比如在我的例子中我想返回一个int,请将IQueryable转换为数组,然后使用ArrayName[0]@user2998266进行转换。如果答案对你有帮助,请将其标记为+1以帮助其他人。这是一个迟来的答案,因此最好添加一些示例代码(MCVE:)。
var portfolio = _db.Users
.Where(u => u.UserName == userName)
.Select(u =>u.Portfolio)
.FirstOrDefault();
if(portfolio == null)
{
return HttpNotFound();
}//end of if
return View(portfolio);