1

C# オブジェクトのリストがあり、各オブジェクトには 100 個のプロパティがあります。

public string Group1;
public string Group2;
public string Group3;

.....................
...
..
.
public string Group99;
public string Group100;

1 から 100 の範囲の 2 つの数値を渡して、その範囲の間にあるプロパティのみを取得できるようにしたいと考えています。

たとえば、31 から 50 までの数値を渡すと、次のプロパティが必要になります。

public string Group31;
public string Group32;

....................
...
..
.
public string Group50;

どうすればこれを達成できますか?

4

1 に答える 1

1

あなたの場合、フィールドがあるので、次のようにリフレクションと 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));
        }     
   }
于 2013-07-06T10:12:58.173 に答える