根据字段名称检索字段值

时间:2011-10-06 17:27:47

标签: linq-to-sql

我继承了一个数据库,其中各个数据点水平存储在字段中而不是垂直存储。换句话说,除了其他字段之外,每个记录(代表从中获得数据的特定频道)有250个字段,其名称范围从“P0001”到“P0250”。

我想从每个PXXXX字段中检索数据并将其存储在List(Double)中。假设R250是包含这些字段的记录,如何构造LINQ查询以获取此数据?

2 个答案:

答案 0 :(得分:1)

    For Each pn In Type.GetType(R250.ToString).GetProperties.Where(Function(n) n.Name.StartsWith("P")).Select(Function(m) m.Name)
        Console.WriteLine(Type.GetType(R250.ToString).GetProperty(pn).GetValue(R250, Nothing))
    Next

答案 1 :(得分:0)

您可以使用反射,例如:

List<double> theList = new List<double>();
for (int i = 1; i <=250; i++)
{
   PropertyInfo fiField = R250.GetType().GetProperty("P" + i.ToString().PadLeft(4));
   if (fiField != null && fiField.PropertyType == typeof(double))
      theList.Add((double)fiField.GetValue(R250, new object[] { }));
}