C# 如何在datagridview中加载多个列表

C# 如何在datagridview中加载多个列表,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我目前正在使用Windows窗体应用程序,我有3个数据列表,我想将每个列表添加到datagrid的一列中。有没有办法我可以做到这一点 XDocument doc = XDocument.Load(Globals.pathNotifFile); var dates = doc.Descendants("Date"); var hours = doc.Descendants("Time"); var message = doc.Desc

我目前正在使用Windows窗体应用程序,我有3个数据列表,我想将每个列表添加到datagrid的一列中。有没有办法我可以做到这一点

        XDocument doc = XDocument.Load(Globals.pathNotifFile);
        var dates = doc.Descendants("Date");
        var hours = doc.Descendants("Time");
        var message = doc.Descendants("Message");
        var hoursCollection = new List<String>();
        var dateCollection = new List<String>();
        var messageCollection = new List<String>();

        foreach (var date in dates)
        {
            dateCollection.Add(date.Value);
        }

        foreach (var hour in hours)
        {
            hoursCollection.Add(hour.Value);
        }

        foreach (var messages in message)
        {
            messageCollection.Add(messages.Value);
        }

        return Tuple.Create(hoursCollection,dateCollection, messageCollection);
    }
XDocument doc=XDocument.Load(Globals.pathNotifFile);
var日期=单据子代(“日期”);
var小时数=单据子体(“时间”);
var消息=文件子体(“消息”);
var hourscolection=新列表();
var dateCollection=新列表();
var messageCollection=新列表();
foreach(日期中的var日期)
{
dateCollection.Add(date.Value);
}
foreach(以小时为单位的var小时)
{
hoursCollection.Add(小时值);
}
foreach(消息中的var消息)
{
messageCollection.Add(messages.Value);
}
返回Tuple.Create(hourscolection、dateCollection、messageCollection);
}

完成此任务的最简单方法是构建一个包含三个数据点的对象。例如:

public class MyGridDateTime
{
  public string Hour{get;set;}

  public string Date{get;set;}

  public string Message{get;set;}
}

public void InitalizeGrid()
{
   List<MyGridDateTime> list = new List<MyGridDateTime>();
   int i = 0;
   foreach (string hour in hoursCollection)
   {
      list.Add(new MyGridDateTime {Hour = hour, Date = dateCollection[i], Message = messageCollection[i]};
      i++;
   }

   grid.DataSource = list;
}
公共类MyGridDateTime
{
公共字符串Hour{get;set;}
公共字符串日期{get;set;}
公共字符串消息{get;set;}
}
public void initializegrid()
{
列表=新列表();
int i=0;
foreach(以小时为单位的字符串小时集合)
{
添加(新的MyGridDateTime{Hour=Hour,Date=dateCollection[i],Message=messageCollection[i]};
i++;
}
grid.DataSource=list;
}

请注意,只有当所有列表都包含相似数量的数据时,此选项才有效。否则,如果列表大小不同,则需要将其更新为string.empty而不是Exception。

能否给出一个图像的显示方式?我认为您的问题应该是如何将Tuple绑定到DataGridView,我认为这是不可能的。