C# wpf 2系列&x27;数据网格中的
我有两个收藏,一个在另一个里面,像这样C# wpf 2系列&x27;数据网格中的,c#,wpf,collections,wpfdatagrid,C#,Wpf,Collections,Wpfdatagrid,我有两个收藏,一个在另一个里面,像这样 public class Meter { public string MeterID { get; set; } public List<Data> data { get; set; } } public class Data { public string Time { get; set; } public int Signal { get; set;
public class Meter
{
public string MeterID { get; set; }
public List<Data> data { get; set; }
}
public class Data
{
public string Time { get; set; }
public int Signal { get; set; }
}
public static void LoadMeterListFromFile(List<FileInfo> fileList)
{
foreach (FileInfo fi in fileList)
{
foreach (var line in File.ReadAllLines(fi.FullName))
{
var columns = line.Split(';');
string MeterID = columns[1];
if (!meters.ContainsKey(MeterID))
{
meters.Add(MeterID, new Meter() { MeterID = MeterID, data = new List<Data>() });
}
Data d = new Data
{
TimeStamp = columns[0],
Signal = Convert.ToInt32(columns[2].Replace("SignalStrength=", "")),
};
meters[MeterID].data.Add(d);
}
}
}
公共类仪表
{
公共字符串MeterID{get;set;}
公共列表数据{get;set;}
}
公共类数据
{
公共字符串时间{get;set;}
公共int信号{get;set;}
}
我从这样的txt文件中读取
public class Meter
{
public string MeterID { get; set; }
public List<Data> data { get; set; }
}
public class Data
{
public string Time { get; set; }
public int Signal { get; set; }
}
public static void LoadMeterListFromFile(List<FileInfo> fileList)
{
foreach (FileInfo fi in fileList)
{
foreach (var line in File.ReadAllLines(fi.FullName))
{
var columns = line.Split(';');
string MeterID = columns[1];
if (!meters.ContainsKey(MeterID))
{
meters.Add(MeterID, new Meter() { MeterID = MeterID, data = new List<Data>() });
}
Data d = new Data
{
TimeStamp = columns[0],
Signal = Convert.ToInt32(columns[2].Replace("SignalStrength=", "")),
};
meters[MeterID].data.Add(d);
}
}
}
公共静态void LoadMeterListFromFile(列表文件列表)
{
foreach(文件列表中的文件信息fi)
{
foreach(File.ReadAllLines(fi.FullName)中的var行)
{
var columns=line.Split(“;”);
字符串MeterID=列[1];
如果(!米。容器(米)
{
Add(MeterID,new Meter(){MeterID=MeterID,data=new List()});
}
数据d=新数据
{
时间戳=列[0],
Signal=Convert.ToInt32(列[2]。替换(“SignalStrength=”,“”),
};
米[MeterID].data.Add(d);
}
}
}
如何在WPF DATAGRID中显示集合,最好是用MealID分组?
< P>你应该考虑改变你读取数据的方式,并将MeTeID添加到类数据。public static void LoadMeterListFromFile(List<FileInfo> fileList)
{
foreach (FileInfo fi in fileList)
{
foreach (var line in File.ReadAllLines(fi.FullName))
{
var columns = line.Split(';');
string meterID= columns[1];
if (!meters.ContainsKey(MeterID))
{
meters.Add(meterID, new Meter() { MeterID = meterID, data = new List<Data>() });
}
Data d = new Data
{
MeterID = meterID,
TimeStamp = columns[0],
Signal = Convert.ToInt32(columns[2].Replace("SignalStrength=", ""))
};
meters[MeterID].data.Add(d);
}
}
}
公共静态void LoadMeterListFromFile(列表文件列表)
{
foreach(文件列表中的文件信息fi)
{
foreach(File.ReadAllLines(fi.FullName)中的var行)
{
var columns=line.Split(“;”);
字符串meterID=列[1];
如果(!米。容器(米)
{
Add(meterID,new Meter(){meterID=meterID,data=new List()});
}
数据d=新数据
{
MeterID=MeterID,
时间戳=列[0],
Signal=Convert.ToInt32(列[2]。替换(“SignalStrength=”,“”)
};
米[MeterID].data.Add(d);
}
}
}
然后,要按MeterID对结果进行分组并将其添加到DataGrid:
public MyForm()
{
InitializeComponent();
// Get meters list
var result = new List<Data>();
foreach(var m in meters)
result.AddRange(m.data);
// the records should be grouped already, but to be sure you can use linq
result.GroupBy(d => d.MeterID);
// now add data to data grid
BindingList<Data> data = new BindingList<Data>(result);
dataGridView1.DataSource = data;
publicmyform()
{
初始化组件();
//获取仪表列表
var result=新列表();
foreach(var m,单位:米)
结果.添加范围(m.数据);
//记录应该已经分组了,但要确保可以使用linq
结果:GroupBy(d=>d.MeterID);
//现在将数据添加到数据网格
BindingList数据=新的BindingList(结果);
dataGridView1.DataSource=数据;
thx以获取帮助。我已将时间戳更改为日期时间,因为我需要在Wpf图表中使用它,但这意味着我需要将时间戳转换为日期时间,但我一直得到“未识别为有效日期时间的字符串”。我如何修复此问题?此错误意味着,没有从您提供的字符串到datetime的默认转换。若要使用datetime.ParseExact()
方法定义和转换字符串格式,请查找示例。