2017-04-11 14 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(); 

私はデータを完全に取得しています。 {:Assetid、値:1、名前:SourceStatus、値:falseの名前} - 私の挑戦は、私はHeaderData

私のリストが見えるよう
public class HeaderData 
{ 
    public STRING Name { get; set; } 
    public STRING Value { get; set; } 

} 

リスト - 別では、このデータを取得する必要があり、です。私は現在以下のようにしています。私はそれが恐ろしい方法であることを理解しています。私はそれをより良くすることはできますか?

 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というクラス

関連する問題