Индекс 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);
Другие вопросы по тегам