使用Linq C#将列名称作为键和列数据作为值

时间:2017-01-20 17:16:56

标签: c# entity-framework linq

我必须显示具有列名的表中的数据,并且我正在使用LINQ查询从数据库中获取数据。我必须从表中只选择一行。

数据行

 | 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 |

有没有办法将数据输入字典,其中列名将用作键,数据用作值?

2 个答案:

答案 0 :(得分:2)

最后,我设法使用以下代码以我想要的形式获取数据。

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
   }
}

答案 1 :(得分:0)

你的问题不清楚。如果我理解正确,您的表格如下:

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

您希望有两个词典条目

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

在C#with dictionary中你不能拥有它! &#34; Key&#34;必须是独一无二的 点击此处:https://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx (向下滚动到备注部分)。

你可以做一些肮脏的解决方法,如:

Dictionary<string, List<object>>

但这看起来很脏!