[asp.net-mvc]获取单个文本值使用 linq

发布时间: 2017/3/25 13:33:12
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我用这条线,而是返回一个值,它得到一个真正的

var valor = valoresCampoAdicionalesEmpresa.Select(p => p.Key == propiedad.Nombre).First();

查看数据从控制器传递这

var valoresCampoAdicionalesEmpresa = (字典) ViewData ["ValoresCampoAdicionalesEmpresa"];

public ActionResult Edit(int? id)
        {
            var listFields = from b in db.Propiedades
                             where b.Entidad.Nombre == "Empresa"
                             select b;
            ViewData["CamposAdicionalesEmpresa"] = listFields.ToList<Propiedad>();

            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Empresa empresa = db.Empresas.Find(id);
            if (empresa.PropiedadesExtra != null)
            {
                XElement xmlTree = XElement.Parse(empresa.PropiedadesExtra);
                Dictionary<string, string> dict = new Dictionary<string, string>();
                foreach (var el in xmlTree.Elements())
                {
                    dict.Add(el.Name.LocalName, el.Value);
                }

                ViewData["ValoresCampoAdicionalesEmpresa"] = dict;
            }

            if (empresa == null)
            {
                return HttpNotFound();
            }
            return View(empresa);
        }

解决方法 1:

改变你 SelectWhereWhere使用谓词来筛选数据并返回相同...结构只是一个子集. Select另一方面改变数据结构无论评估中提供的函数。你的情况你正在改变的结构更加单一 Boolean 结果是否等于 Key 等于 Nombre 。固定的代码是如下︰

var valor = valoresCampoAdicionalesEmpresa.Where(p => p.Key == propiedad.Nombre).First();

并在评论中指出 First * 接受谓词本身,所以您可以只调用 First 作为组合 WhereFirst

var valor = valoresCampoAdicionalesEmpresa.First(p => p.Key == propiedad.Nombre);

First如果没有什么事,你可以使用将引发 FirstOrDefault 如果,更适合

赞助商