C# 从视图到列表的数据
我有一个视图,它返回以下行的数据-Id、SourceStatus、StatusId、ActivePre、Runtime。 在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?
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();