我有一个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;
我将如何实现这一目标?
在您的情况下,您具有字段,因此可以像这样使用反射和LINQ:
//pass your class to typeof
var ClssType = typeof (SomeCLass);
ClssType.GetFields().OrderBy(n=>n.Name).Skip(30).Take(19).ToList();
在“跳过”中,传递要跳过默认输入字段的数字。
如果您有属性,则可以使用.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));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句