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()
方法定义和转换字符串格式,请查找示例。