我有一个c#对象列表,每个对象有100个属性:
public string Group1;
public string Group2;
public string Group3;
.....................
...
..
.
public string Group99;
public string Group100;
我希望能够传递1到100范围内的两个数字,并且只能获得介于该范围之间的属性。
例如,如果我传入数字31到50,我会想要属性:
public string Group31;
public string Group32;
....................
...
..
.
public string Group50;
我怎样才能实现这个目标?
答案 0 :(得分:1)
在你的情况下,你有字段,所以你可以像这样使用反射和LINQ:
//pass your class to typeof
var ClssType = typeof (SomeCLass);
ClssType.GetFields().OrderBy(n=>n.Name).Skip(30).Take(19).ToList();
跳过你传递你想跳过的数字befaure take fields。
如果您有属性,则可以使用.GetProperties()
代替.GetFields()
要获取属性的值,您需要为数组中的每个对象调用.GetValue(obj, null)
。
//let say you have array of objects myObj[] then your code will look like this:
var fieldsInfos = ClssType.GetFields().OrderBy(n=>n.Name).Skip(30).Take(19).ToList();
//go thorugh your array
foreach(var obj in myObj)
{
//go through fields
foreach(var field in fieldsInfos)
{
//get value of field by calling
Console.WriteLine(field.GetValue(obj, null));
}
}