Индекс linq результат с использованием словаря или аналогичного
Я использую LINQ to SQL (через LINQPad), чтобы извлечь некоторые данные из базы данных MySQL.
var res = MyTable.First();
res.Dump();
И у меня есть 255 столбцов, как это.
i0 | 0.01
i1 | 0.11
i2 | 4.01
...
i254 | 1.12
Я хотел бы преобразовать значения из 255 столбцов в массив после выбора. Есть ли способ перебрать значение res
как словарь, так что можно будет сделать цикл вроде (в псевдокоде):
for i in 0..254 do
array[i] = res["i" + i]
2 ответа
Решение
По предложению @sloth я заставил его работать с отражением так:
var type = res.GetType();
type.GetMembers().Where(s => s.Name.StartsWith("i")).Select(s => new { Name = s.Name, Value=s.GetValue(res)}).Dump();
Вы можете использовать отражение получить свойства.
Пример:
var res = MyTable.First();
var type = res.GetType();
for(int i=0; i<=254; i++)
array[i] = type.GetProperty("i" + i).GetValue(res);