Как преобразовать словарь в таблицу данных? - PullRequest
0 голосов
/ 20 января 2020

Использование C#, как преобразовать словарь в таблицу данных?

Есть пример того, как преобразовать список в таблицу данных на Преобразовать generi c Список / Перечислимый в DataTable?

Я начал работать над этим с 2019-12-17 гг.

И я искал сайты Google, Stackoverflow и Microsoft.

public static DataTable DictionaryToDataTable<T>(this IDictionary<K, V> data)
{
    PropertyDescriptorCollection propertiesK = TypeDescriptor.GetProperties(typeof(K));
    PropertyDescriptorCollection propertiesV = TypeDescriptor.GetProperties(typeof(V));

    DataTable table = new DataTable();

    foreach (PropertyDescriptor prop in propertiesK)
       table.Columns.Add(prop.Name,
                         Nullable.GetUnderlyingType(prop.PropertyType)
                         ?? prop.PropertyType);

    foreach (PropertyDescriptor prop in propertiesV)
        table.Columns.Add
              (prop.Name, Nullable.GetUnderlyingType(prop.PropertyType)  
                          ?? prop.PropertyType);

    foreach(KeyValuePair<K, V> item in data)
    {
       DataRow row = table.NewRow();

       foreach (PropertyDescriptor prop in propertiesK)
          row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;

       foreach (PropertyDescriptor prop in propertiesV)
          row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;

       table.Rows.Add(row);
    }

    return table;
}
Type ex = typeof(InformationInTransit.ProcessLogic.DataTableHelper);
MethodInfo mi = ex.GetMethod("DictionaryToDataTable");
MethodInfo miConstructed = 
   mi.MakeGenericMethod
   (
      typeof
      (
          Dictionary
          <
              String,
              InformationInTransit.ProcessLogic.Exact.Participation
          >
      )
   );

   object[] args = {result};
   DataTable dataTable = (DataTable) miConstructed.Invoke
   (
       null,
       args
   );

1 Ответ

1 голос
/ 20 января 2020

одна попытка будет выглядеть примерно так:

        Dictionary<int,int> dictionary=new Dictionary<int, int>();
        DataTable dt=new DataTable();
        dt.Columns.Add("Key", typeof(int));
        dt.Columns.Add("Val", typeof(int));

        foreach (var item in dictionary)
        {
            DataRow dr = dt.NewRow();
            dr["Key"] = item.Key;
            dr["Val"] = item.Value;
            dt.Rows.Add(dr);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...