Получить значения поля на основе имени поля - PullRequest
1 голос
/ 06 октября 2011

Я унаследовал базу данных, в которой отдельные точки данных хранятся по горизонтали в полях, а не по вертикали.Другими словами, в дополнение к другим полям, в каждой записи (которая представляет определенный канал, из которого были получены данные) есть 250 полей, имена которых варьируются от «P0001» до «P0250».

Я хочу получить данные из каждого поля PXXXX и сохранить их в списке (двойного).Предполагая, что R250 - это запись с этими полями, как мне создать запрос LINQ для получения этих данных?

Ответы [ 2 ]

1 голос
/ 09 октября 2011
    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
0 голосов
/ 06 октября 2011

Вы можете использовать отражение, например:

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[] { }));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...