使用字典或类似的索引 linq 结果

Index linq result using a dictionary or similar

我正在使用 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 列中的值转换为 select 之后的数组。有没有一种方法可以将 res 的值作为字典进行迭代,这样就可以像(在伪代码中)这样进行循环:

for i in 0..254 do
    array[i] = res["i" + i]

您可以使用反射来获取属性。

示例

var res = MyTable.First();
var type = res.GetType();
for(int i=0; i<=254; i++)
    array[i] = type.GetProperty("i" + i).GetValue(res);

正如@sloth 所建议的那样,我让它与反射一起工作:

var type = res.GetType();
type.GetMembers().Where(s => s.Name.StartsWith("i")).Select(s => new { Name = s.Name, Value=s.GetValue(res)}).Dump();