使用字典或类似的索引 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();
我正在使用 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();