2011-10-06 59 views
1

我繼承了一個數據庫,其中各個數據點在字段中水平存儲,而不是垂直存儲。換句話說,除了其他字段外,每個記錄(代表從中獲得數據的特定通道)有250個字段,其名稱範圍從「P0001」到「P0250」。根據字段名稱檢索字段值

我想從每個PXXXX字段檢索數據並將其存儲在列表(雙精度型)中。假設R250是具有這些字段的記錄,那麼如何構建LINQ查詢以獲取此數據?

回答

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 
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[] { })); 
} 
+0

謝謝你,喬。發佈後大約20分鐘,我找到了上面列出的答案。 – blueshift