C# 从视图到列表的数据

C# 从视图到列表的数据,c#,C#,我有一个视图,它返回以下行的数据-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?

我有一个视图,它返回以下行的数据-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();
这样我的列表看起来-{Name:Assetid,value:1,Name:SourceStatus,value: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 });
            }
deviceData.HeaderData=newlist();
foreach(deviceData.TestList中的var v)
{
添加(new HeaderData(){Name=“Id”,Value=v.ActivePreset});
添加(新设备HeaderData(){Name=“SourceStatus”,Value=v.SourceStatus});
添加(新的DeviceHeaderData(){Name=“Runtime”,Value=v.Runtime});
}

像这样的东西怎么样

// 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();
}

像这样的事情可能是什么

    deviceData.HeaderData = deviceData.TestList.select
                            ( x => new HeaderData { Name = x.name, Value = x.value} )
                           .toList();
尚未测试此代码,这只是一个示例,要使此代码正常工作,必须将name属性和value属性添加到

测试列表类


问题是您真的需要另一个类来显示相同的数据吗?也许你只是想用一个不同的视角。Wpf非常擅长对一些控件进行数据模板化。我认为目前,您的场景有点不清楚您希望将数据用于什么目的(这实际上可能有助于解决您的问题)
    deviceData.HeaderData = deviceData.TestList.select
                            ( x => new HeaderData { Name = x.name, Value = x.value} )
                           .toList();