使用带数组的foreach并遇到问题的新手

时间:2013-03-01 17:16:16

标签: c# arrays foreach

我正在尝试获取一个类中的数组,然后使用foreach语句将值迭代到表中。

我的班级设置如下:

public class items
{
   private string[] list;

   public items()
   {
      list[0] = "apples";
      list[1] = "oranges";
      list[2] = "grapes";
      list[3] = "bananas";
   }
}

在我的page_load活动中,我试图打电话给班级:

list fruit = new list();

StringBuilder sb = new StringBuilder();

sb.Append("<table id=\"items\">");
sb.Append("<tr>");
sb.Append("<th>Item</th>");
sb.Append("<th>Description</th>");
sb.Append("<th>Unit Cost</th>");

foreach(string fruit in list)
{
   sb.Append(String.Format("{0}", items.fruit));
}

我是使用foreach循环的新手,它真的令人困惑。如果我走在正确的轨道上,我希望能有一些清晰度。

感谢。

5 个答案:

答案 0 :(得分:1)

如果您想在水果列表周围为HTML表格构建标记,您应该将在每个单独项目周围做标记的部分放入循环中:

 sb.Append("<table id=\"items\">");
 sb.Append("<tr>");
 sb.Append("<th>Item</th>");
 sb.Append("<th>Description</th>");
 sb.Append("<th>Unit Cost</th>");
 sb.Append("</tr>");
 foreach(var fruit in list) { // Use "var" or the exact type for the fruit
     sb.Append("<tr>");
     // I am assuming here that the fruit has Description and Cost.
     // You may need to replace these names with names of actual properties
     sb.Append(String.Format("<td>{0}</td>", fruit.Description));
     sb.Append(String.Format("<td>{0}</td>", fruit.Cost));
     sb.Append("</tr>");
 }
sb.Append("</table>");

答案 1 :(得分:0)

你想要的是这个:

sb.Append("<table id=\"items\">");
sb.Append("<tr>");
sb.Append("<th>Item</th>");
sb.Append("<th>Description</th>");
sb.Append("<th>Unit Cost</th>"); 
sb.Append("</tr>");
foreach(string fruit in list)
{
   sb.Append("<tr>");
   sb.Append(String.Format("{0}", fruit));
   sb.Append("description");
   sb.Append(String.Format("2p");
   sb.Append("</tr>");
}
sb.Append("</table>");

答案 2 :(得分:0)

尝试

foreach(string s in fruit)
{
    sb.Append(String.Format("{0}", s));
{

答案 3 :(得分:0)

您的代码存在一些问题。首先,items.list类之外无法访问items,因此无法在page_load事件中迭代它。你必须让它可以访问:

public class items
{
   private string[] list;

   public string[] List
   {
      get { return list; }
   }

   // ...
}

现在,您将能够像items那样实例化page_load课程:

items fruit = new items();

循环遍历List类的items属性:

foreach(string f in fruit.List)
{
   sb.Append(String.Format("{0}", f));
}

答案 4 :(得分:0)

使用Linq:假设您的数组是水果

fruit.ToList().ForEach(f=> sb.Append(String.Format("{0}", f));

理想情况下,如果您的列表中有descriptionunitCost,则可以将所有<tr>标记添加到表格主体中;

StringBuilder sb = new StringBuilder();
sb.Append("<table id=\"items\">");
sb.Append("<tr><th>Item</th><th>Description</th><th>Unit Cost</th></tr>");

newList.ToList()
 .ForEach(f=> 
          sb.Append(String.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>", 
                         f.item, f.desc, f.unitCost))
         );
sb.Append("</table>");