【问题标题】:Use Lambda expression to get value from model使用 Lambda 表达式从模型中获取值
【发布时间】:2016-02-04 14:23:11
【问题描述】:

尽管进行了大量搜索,但我无法获得正确的 Lambda 表达式以从数据库中获取我想要的信息。我的问题是这样的:

控制器中的 Action 方法获取一个 id 值作为 in 参数。使用 id,我想在 Products 类中获取与 id 与 Products CategoriesID 匹配的名称。我已经开始了,但我不知道如何完成它。我能得到一些帮助吗?我想我在这里做错了吗?

ViewBag.Categori = db.Products.Where(x => x.Name.Equals(??))

【问题讨论】:

  • 那么,您需要与 id 参数匹配的产品名称吗?
  • @Zippy 是的,这就是我想要的!
  • 人们为什么要投反对票!?
  • @front-back,我也不知道,但这很烦人 b/c 没有解释他们为什么这样做。

标签: c# asp.net-mvc lambda


【解决方案1】:

要获取与特定 id 匹配的产品名称,请在 LINQ 查询之后编写

db.Products.Where(x => x.Id == desiredId)
           .Select(x => x.Name)
           .SingleOrDefault()

【讨论】:

    【解决方案2】:

    如果我对问题的理解正确,您不需要按name 属性过滤,而是按id 一个。

    类似:

        var product = db.Products.Where(x => x.CategoriesID == id).FirstOrDefault();
        if(product != null)
        {
        ViewBag.Categori = product.Name;
        }
    

    FirstOrDefault 将仅返回第一个匹配项,如果没有具有指定 Id 的产品,则返回 null。

    【讨论】:

    • 感谢您的回答,但在视图中我得到这个:System.Data.Entity.DynamicProxies.Products_A0A267...... 而不是名称!?
    • 我的错,FirstOrDefault 应该在选择之前,正如 Julia 在她的回答中所说的那样。
    • 现在我在 Select 下方看到一条红线!?
    • 谢谢,但是使用最新选项我得到一个空引用错误!
    • 那是因为没有具有该 id 的产品并且 FirstOrDefault 返回 null。尝试使用您知道正确的 ID
    【解决方案3】:

    当您返回一个结果时,您可以使用 FirstOrDefault。

    ViewBag.Categori = db.Products.FirstOrDefault(x => x.Id == id).Name
    

    在上面的代码中,我假设您的产品有一个 Id 键字段,传入的参数名称是 id。

    【讨论】:

      【解决方案4】:
      ViewBag.Categori = db.Products.Where(x => x.CategoriesID == id).FirstOrDefault().Name;                           
      

      【讨论】:

        【解决方案5】:

        试试这个

           ViewBag.Categori = DB.Context.Products.Where(w => w.ProductTypeId == id).Select(s => new
                {
                    Name = s.ProductName
                }).FirstOrDefault();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-18
          • 1970-01-01
          • 1970-01-01
          • 2012-09-10
          • 2017-05-31
          • 1970-01-01
          相关资源
          最近更新 更多