我通过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:我希望能够将值和名称作为循环内的字符串进行比较。
答案 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;
}