每个属性的C#都获取值和名称

时间:2018-02-28 09:19:19

标签: c# json linq

我通过PUT从angularJS发送一个JSON对象到c#,它有一个属性名和一个值。

我试图为每个属性循环并读取名称和值,但它失败了。我已成功通过以下代码只读取名称或仅读取值:

Newtonsoft.Json.Linq.JObject cbpcs = pricestopsale.cbPricegroups;
foreach (string pricegroupInfo in cbpcs.Properties().Select(p => p.Value).ToList())
{
   // I want to be able to do something like this inside here
   if(pricegroupInfo.Value == "Something") {
     // do stuff
   }
}

在上面的示例中,pricegroupInfo有值,如果我更改.Select(p => p.Name).ToList()),我会得到属性的名称。

如果我想在循环中同时获得名称和值,我该怎么办?

更新1:我不知道属性名称,它是动态生成的,因此我事先并不知道属性名称。

更新2:我希望能够将值和名称作为循环内的字符串进行比较。

3 个答案:

答案 0 :(得分:1)

尝试在选择中使用匿名对象。

FROM

答案 1 :(得分:1)

Reference: JObject.Properties Method

.from("{0} partition (p2)", A").join("{0}", B).on(...)

正如您所看到的,它会返回Newtonsoft.Json.Linq.JObject cbpcs = pricestopsale.cbPricegroups; foreach (var pricegroupInfo in cbpcs.Properties().Select(p => new { p.Value, p.Name }).ToList()) { // read the properties like this var value = pricegroupInfo.Value; var name = pricegroupInfo.Name; if(pricegroupInfo.Value.ToObject<string>() == "foo") { Console.WriteLine("this is true"); } } ,使用它可以迭代并使用它来获取属性Newtonsoft.Json.Linq.JObject cbpcs = pricestopsale.cbPricegroups; foreach (var pricegroupInfo in cbpcs.Properties()) { if(pricegroupInfo.Name == "propName" // your property name && pricegroupInfo.Value.ToString() == "something") { // your value // do stuff } } IEnumerable<JProperty>

答案 2 :(得分:0)

试试这个

table {
  border: 1px solid black;
  border-collapse: collapse;
  width:60%;
}

table thead {
  background: #a0a0a0;
  border-bottom: 1px solid black;
}

table tbody td {
  border: 1px solid #f0f0f0;
  width:40em;
}

table tbody {
  display: block;
  height: 10em;
  overflow: auto;
}
相关问题