【问题标题】:How to find one value from an IQueryable in C# ASP.NET MVC 4 using Linq?如何使用 Linq 从 C# ASP.NET MVC 4 中的 IQueryable 中查找一个值?
【发布时间】:2013-11-24 16:20:25
【问题描述】:

这是在使用 EF 的 C# ASP.NET MVC 4 中。我有一个表Users,其中Portfolio 对象定义为其属性之一,Username 对象定义为另一个。 Razor 中的 User.Identity.Name 让我可以在用户登录后将用户名传递给我的控制器。User 在表中的 Portfolio 对象中有一个 Portfolio_Id。我要做的是获得UserPortfolio_Id,而我只需要购买Username。在下面的代码中,您会看到我有一个var protfolioId。我的问题是,当我需要它只是和 int 时,它被我的 LINQ 设置为 IQueryable<int>。我可能错了,但这是否意味着它是一个集合而不是单个值?我怎样才能只获得UserPortfolio_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


    【解决方案1】:
    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);
    

    【讨论】:

    • @user2998266 如果答案对您有帮助,请标记并 +1 以帮助其他人。
    【解决方案2】:

    如果您想返回特定数据类型(例如 int)的特定值,例如我想返回一个 int,请将 IQueryable 转换为数组,然后使用 ArrayName[0] 进行转换

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-30
    • 2019-12-19
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2021-10-06
    相关资源
    最近更新 更多