2016-11-16 7 views
0

私はちょうどこれがいかに正確に動作するか少し混乱しています。私はIEnumerable<T>リストを持っています。私は、mySQLデータベースのストアドプロシージャから引き出しています。オブジェクトにIEnumerable?

 IEnumerable<CheckInVar> CheckInVars = context.Database.SqlQuery<CheckInVar>(
      "Call getCheckinVars(\"WEB\")").ToList(); 

は今、私はこのようなそれらを使用することができるような特性を引き出すために、このオブジェクトをループする必要がありますか?

foreach (var prop in CheckInVars.GetType().GetProperties()) 
     { 

      Console.WriteLine("{0} = {1}", prop.Name, prop.GetValue(CheckInVars, null)); 
     } 

それとも私が直接そのIEnumberable<CheckInVar>オブジェクトのオフに働くことができる、または私はそれで動作するようにそれを変換する必要がありますか?

public class CheckInVar 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [Column("ID")] 
    public int ID { get; set; } 
    public string Code { get; set; } 
    public string VarValue { get; set; } 
    public string AccessMethod { get; set; } 
    public string Active { get; set; } 
    public string DateCreated { get; set; } 
    public string DateUpdated { get; set; } 
    public string UpdatedBy { get; set; } 
} 
+0

「CheckInVar」の定義は何ですか? – Christos

+8

CheckInVarsクラスを直接参照するだけで、ここに反映させる理由はありません: 'foreach(CheckInVarsのvar civ){...}' – Amy

+1

もし私が蚊を殺すためにミサイルを発射しているなら、@Amyあなたは反射を使用する必要はありません – Jaya

答えて

1

はい。

何らかの理由でリフレクションによって各コレクション(IEnumerable)アイテムのプロパティにアクセスする場合は、IEnumerableをループして各アイテムを順番に処理する必要があります。あなたの例で使用

:他の人はしかし述べたように

foreach(var checkInVar in CheckInVars) 
{ 
    foreach(var prop in checkInVar.GetType().GetProperties()) 
    { 
     Console.WriteLine("{0} = {1}", prop.Name, prop.GetValue(checkInVar)); 
    } 
} 

は、反射本当に必要なのか?プロパティに直接アクセスできませんか?

私は、処理コードを変更することなく、CheckInVarタイプを変更できるようにリフレクションを使用している可能性があります。

0

「このオブジェクトをループする必要がありますか」という質問に答えるには、答えは「はい」です。しかし、エイミーが説明したように、より良い方法があります。

Reminberでは、CheckInVarsは、Checkinvarが1つでも多数でも構いません。 I

2

のforeachを使用してみてください:

IEnumerable<CheckInVar> CheckInVars = context.Database.SqlQuery<CheckInVar>(
    "Call getCheckinVars(\"WEB\")").ToList(); 

foreach(CheckInVar item in CheckInVars) 
{ 
    Console.WriteLine("ID: " + item.ID.ToString()); 
    Console.WriteLine("Code: " + item.Code); 
    Console.WriteLine("VarValue: " + item.VarValue); 
    //.... 
} 
関連する問題