2017-01-20 7 views
0

カラム名を持つテーブルからデータを表示する必要があり、データベースからデータを取得するためにLINQクエリを使用しています。私はテーブルから1つだけの行を選択する必要があります。Linqを使用してキーとカラムのデータとして値を取得するC#

データ行は

| Column 1 | | Column 2 | | Column 3 | 
------------ ------------ ------------ 
| value1 | | value 2 | | value 3 | 

データはこの形式で表示されます。

| Column Name | | Value | 

| Column 1 | | value 1 | 

| Column 2 | | value 2 | 

| Column 3 | | value 3 | 

列名を値としてキーとデータとして使用する辞書にデータを取得する方法はありますか?

答えて

1

最後に、次のコードを使用して、目的のフォームでデータを取得できました。

Dictionary<string, string> dictionaryData = new Dictionary<string, string>(); 
using (var db = new DbContext()) 
{ 
    db.Configuration.ProxyCreationEnabled = false; // disable lazy loading if require. 
    var dataFromDB= db.TestTable.Where(x => x.ID == id).FirstOrDefault(); 
    var props = dataFromDB.GetType().GetProperties(); // Get All properties of table class 
    foreach (var column in props) 
    { 
     string columnName = column.Name; 
     string columnValue = string.Empty; 
     if(column.GetValue(dataFromDB) != null) // check obj has value for that particular property 
     { 
     columnValue = column.GetValue(dataFromDB).ToString(); 
     } 
     dictionaryData .Add(columnName,columnValue); // Add Column Name as key and Column Data As Value 
    } 
} 
0

あなたの質問は不明です。私が正しく理解していれば、あなたのテーブルには、次のようになります。

| Column name | 
--------------- 
| value1  | 
| value2  | 

そして、あなたは、あなたがそれを持つことはできません辞書とC#では2つの辞書のエントリ

Key = "Column name", Value = "value1" 
Key = "Column name", Value = "value2" 

を持っているしたいと思います! 「キー」は一意でなければなりません。 ここで確認してください:https://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx (「注意」セクションまでスクロールしてください)。

Dictionary<string, List<object>> 

をしかし、これは非常に汚れて見えます:

あなたは次のようにいくつかの汚れの回避策を行うことができます!

+0

回答を更新しました。実際には、テーブルからレコードを1つだけ取得する必要があります。そのため、列名は繰り返されず、キーとして使用できます。 – Asad

関連する問題