刚开始对数组使用foreach并且遇到问题

本文关键字:遇到 问题 foreach 数组 刚开始 | 更新日期: 2023-09-27 18:01:41

我试图采取一个数组,我有一个类,然后使用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循环,它真的很令人困惑。我希望能弄清楚我是否在正确的轨道上。

谢谢。

刚开始对数组使用foreach并且遇到问题

如果您想在水果列表周围构建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>");

Try

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

你想要的是:

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>");

您的代码有几个问题。首先,items.listitems类之外是不可访问的,因此没有办法在page_load事件中迭代它。你必须使它易于访问:

public class items
{
   private string[] list;
   public string[] List
   {
      get { return list; }
   }
   // ...
}

现在,你将能够实例化你的items类,就像你在page_load:

items fruit = new items();

和循环通过items类的List属性:

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

使用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>");