Я пытаюсь создать словарь из моей таблицы данных.В настоящее время я делаю это, сначала создавая IList, а затем перебирая List и добавляя их в словарь, индивидуально определяя свойство Primary key результирующего объекта в списке для каждого конкретного случая.
Мне было интересноесли это можно сделать с помощью шаблонов.
В настоящее время я получил следующий код, который не компилируется или не работает:
public static IDictionary<T1, T2> ToDictionary<T1,T2>(this DataTable table) where T2 : new()
{
IList<PropertyInfo> properties = GetPropertiesForType<T2>();
IDictionary<T1,T2> result = new Dictionary<T1,T2>();
Dictionary<string, int> propDict = GetPropertyDictionary(properties, table);
T1 PK;
foreach (var row in table.Rows)
{
var item = CreateDictItemFromRow<T2>((DataRow)row, properties, propDict);
result.Add(item. item); //not sure here
}
return result;
}
По сути, я хотел бы вызвать следующее:
Dictionary<int, MyDBClass> Items = DataTable.ToDictionary<int,MyDBClass>();
или
Dictionary<Int16,MyDBClass> Items = DataTable.ToDictionary<Int16, MyDBClass>();
Я предполагаю, что где-то мне нужно передать имя свойства первичного ключа этой функции.В противном случае я могу с уверенностью предположить, что первый столбец в моей Datatable содержит первичный ключ (хотя и небезопасно предполагать, что это всегда int (может быть короткий или байт)).
Я также понимаю, что это вполнелегко сделать это с помощью LINQ, но я до сих пор не дошел до C # и хочу изменить существующее приложение.
Помощь приветствуется.