2016-06-17 25 views
0
string[] data = { "Col1", "Col2", "Col3" }; 

tblMain main = _serviceRepository.GetMainData(record.ExtractID); 

foreach (string colName in data) 
{ 

} 

テーブルの列名で構成される文字列があります。また、エンティティフレームワークを使用してデータベースからデータを取得しています。データはtblMain型として保存している1行だけになります。今度は配列を表の列名と比較したいと思います。特定の列名から値を取得する方法

テーブルにその列名が存在する場合は、テーブルからデータを取得する必要があります。これを行う方法はありますか?

tblMainは、あなたがクラスPropertyInfoでそれを行うためにリフレクションを使用することができモデル

public partial class tblMain 
{ 
    public int ID { get; set; } 
    public string Col1 { get; set; } 
    public string Col2 { get; set; } 
    public string Col3 { get; set; } 
} 
+0

あなた 'tblMain'クラスの特徴は何ですか? 'DataTable'クラスに似ている場合、名前の比較だけでなく、名前として存在するかどうかをチェックできるように、列のコレクションが必要です。しかし、私たちはあなたのカスタムクラスについての情報がないので、私たちはさらに助けになることはできません。 –

+0

ここでは、tblMainはモデルにすぎません。ここで列名を取得することはできません。あるいは、私はここでそれをどうやって得るのか分からないと思う。私は自分の質問を編集して、もう一度それを見てください。 –

+0

[Entity Frameworkにエンティティが存在するかどうかを確認する一般的な方法?](Entity Frameworkのhttp://stackoverflow.com/questions/6018711/generic-way-to-check-ifentity-exists-inentity-framework) – pedrofernandes

答えて

0

の一種です。 列からデータを取得する場合は、Entity FrameworkからメソッドGetValueへのオブジェクト 'tblMain'であるクエリの結果をパラメータに渡す必要があります

これは、 COL1:もちろん

tblMain queryResult = ctx.tblMain.first(); // get your fist row in the DbSet 

PropertyInfo prop = tblMain.GetType().GetProperties(data[0]); 
string col1Value = prop.GetValue(queryResult); 

、あなたが方法PropertyExist(と検証を追加することもできます)

関連する問題