2017-04-11 66 views
0

我有一個視圖,它返回以下行的數據 - Id,SourceStatus,StatusId,ActivePre,Runtime。 在c#中我創建了一個類,並寫了一個參數化查詢來獲取數據。從視圖到列表的數據

public class TestClass 
{ 

    public int Id { get; set; } 

    public bool? SourceStatus { get; set; } 

    public int? StatusId{ get; set; } 

    public int? ActivePre { get; set; } 

    public string Runtime { get; set; } 
} 


string mydata= "SELECT * FROM view1 WHERE Id = {0}"; 
deviceData.TestList = dataContext.ExecuteQuery<TestClass>(mydata, deviceId).ToList(); 

在deviceData.TestList中,我獲得了完美的數據。我的挑戰是,我需要在另一個得到這個數據列表 - HeaderData

public class HeaderData 
{ 
    public STRING Name { get; set; } 
    public STRING Value { get; set; } 

} 

,使得我的列表如下 - {名稱:由assetid,價值:1,名稱:SourceStatus,值:false}。我目前正在做如下。有點我明白這是一種可怕的方式。我可以做得更好嗎?

 deviceData.HeaderData= new List<HeaderData>(); 
     foreach(var v in deviceData.TestList) 
      { 
       deviceData.HeaderData.Add(new HeaderData() { Name = "Id" , Value = v.ActivePreset}); 
       deviceData.HeaderData.Add(new DeviceHeaderData() { Name = "SourceStatus", Value = v.SourceStatus }); 
       deviceData.HeaderEntries.Add(new DeviceHeaderData() { Name = "Runtime", Value = v.Runtime }); 
      } 
+0

的問題是,你真的需要另一個類來顯示相同​​的數據?也許你只是想用不同的觀點。 Wpf在數據模板化控制方面非常出色。我認爲目前,你的方案有點不清楚你想要使用什麼數據(這在解決你的問題時實際上可能是有用的) – Icepickle

回答

0

這樣的事情呢?

// Get property array 
var properties = GetProperties(some_object); 

foreach (var p in properties) 
{ 
    string name = p.Name; 
    var value = p.GetValue(some_object, null); 
} 

private static PropertyInfo[] GetProperties(object obj) 
{ 
    return obj.GetType().GetProperties(); 
} 
0

這樣的事情可能是?

deviceData.HeaderData = deviceData.TestList.select 
          (x => new HeaderData { Name = x.name, Value = x.value}) 
          .toList(); 

還沒有測試此代碼,這只是一個例子,這個代碼工作,你必須& &值屬性添加名稱屬性。

TestList類