1
我繼承了一個數據庫,其中各個數據點在字段中水平存儲,而不是垂直存儲。換句話說,除了其他字段外,每個記錄(代表從中獲得數據的特定通道)有250個字段,其名稱範圍從「P0001」到「P0250」。根據字段名稱檢索字段值
我想從每個PXXXX字段檢索數據並將其存儲在列表(雙精度型)中。假設R250是具有這些字段的記錄,那麼如何構建LINQ查詢以獲取此數據?
我繼承了一個數據庫,其中各個數據點在字段中水平存儲,而不是垂直存儲。換句話說,除了其他字段外,每個記錄(代表從中獲得數據的特定通道)有250個字段,其名稱範圍從「P0001」到「P0250」。根據字段名稱檢索字段值
我想從每個PXXXX字段檢索數據並將其存儲在列表(雙精度型)中。假設R250是具有這些字段的記錄,那麼如何構建LINQ查詢以獲取此數據?
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
您可以使用反射,如:
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[] { }));
}
謝謝你,喬。發佈後大約20分鐘,我找到了上面列出的答案。 – blueshift