如何使用Linq从C#ASP.NET MVC 4中的IQueryable中找到一个值?

如何使用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设置为

这是在C#ASP.NETMVC4中使用EF实现的。我有一个表
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);