【问题标题】:Index linq result using a dictionary or similar使用字典或类似的索引 linq 结果
【发布时间】:2015-02-04 12:56:51
【问题描述】:

我正在使用 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]

【问题讨论】:

    标签: linq linq-to-sql linqpad


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      示例

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

      【讨论】:

      • @lejon 是的;必须用i替换1
      猜你喜欢
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      相关资源
      最近更新 更多