需要从XML文件中填充几个标签,有更快的方法吗?

时间:2012-12-06 05:58:53

标签: c# linq-to-xml ienumerable

我正在加载一个XML文件,并将文档分解为Ienumerable,然后将每个元素放入winform上的标签中。 sofar我有以下代码,可以使用

public void PopulateGameBoard()
    {
         XDocument gameFiles = XDocument.Parse(Properties.Resources.Jeopardy);

         IEnumerable<string> categories =
             from category in gameFiles.Descendants("category")
             select (string)category.Attribute("name");


         string first = categories.ElementAt(0);
         cat1HeaderLabel.Text = first;
         string second = categories.ElementAt(1);
         cat2HeaderLabel.Text = second;
         string third = categories.ElementAt(2);
         cat3Label.Text = third;
         string fourth = categories.ElementAt(3);
         cat4Label.Text = fourth;
         string fifth = categories.ElementAt(4);
         cat5Label.Text = fifth;

    }

最终产品是Jeopardy Game Board,其中的类别和问题将从XML文件中提取

这是我需要执行此操作的5行中的第一行(5个列表分为5行)。我想知道是否有更好的方法来编码这个我最终没有25个语句为一个ElementAt()分配一个变量,然后25个赋值该变量。

1 个答案:

答案 0 :(得分:0)

这里我尝试动态创建标签并为它们赋值,这是一个手写代码,因此没有保证它会编译,进行必要的修改

public void PopulateGameBoard()
{
     XDocument gameFiles = XDocument.Parse(Properties.Resources.Jeopardy);
     IEnumerable<string> categories =
         from category in gameFiles.Descendants("category")
         select (string)category.Attribute("name");
     Label[] cat1HeaderLabel= new Label[100];  
     int i = 0;
       categories.Each(p =>
       {
           cat1HeaderLabel[i] = new Label();
           cat1HeaderLabel[i].Text = p;
           this.Form.Controls.Add(cat1HeaderLabel[i]);
           i++;
       });
}