我有一个JSON类,我曾经将我的对象反序列化为: -
public class Response
{
private Meta _meta;
private Result _result;
private Output _output;
public Meta meta
{
set
{
if (this._meta == null)
{
this._meta = new Meta();
}
this._meta = value;
}
get
{
return this._meta;
}
}
public Output output
{
set
{
if (this._output == null)
{
this._output = new Output();
}
this._output = value;
}
get
{
return this._output;
}
}
}
继承
public class Output
{
...
public Verified verified{
get
{
return this._verified;
}
set
{
if (this._verified == null)
{
this._verified = new Verified();
}
this._verified = value;
}
}
其中有子类
public class Verified
{
...
public Address Address
{
set
{
if (this.address == null)
{
this.address = new Address();
}
this.address = value;
}
get
{
return this.address;
}
}
public Age Age
{
get
{
return this.age;
}
set
{
if (this.age == null)
{
this.age = new Age();
}
this.age = value;
}
}
public City City
{
get
{
return this.city;
}
set
{
if (this.city == null)
{
this.city = new City();
}
this.city = value;
}
}
...
城市,年龄和地址中的所有属性都是相同的,例如
public class Address
{
public int code { get; set; }
public string text { get; set; }
}
我已设法计算使用
验证的属性数量TotalQuestion = response.output.verified.GetType().GetProperties()
.Where(p => !p.PropertyType.IsGenericType
&& !p.PropertyType.IsArray)
.Count();
,这只是我担心的一半。我现在还要计算许多属性" code"在地址,城市,年龄的每个类中,其值为3。
我确实尝试在同一个LinQ的后面添加.GetType()。GetProperty("代码")我用来查询里面的问题总量,但我记得怎么样完成它。
我希望任何人都可以就可能的LinQ解决方案(希望是单行)类型提出建议。
感谢。
西蒙
答案 0 :(得分:1)
我认为这就是你要找的 -
var result = resp.output.verified.GetType().GetProperties().Where(
child => {
var prop = child.GetValue(resp.output.verified, null);
return (int)prop.GetType().GetProperty("code").GetValue(prop, null) == 3;
}).ToList();