刚开始对数组使用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
循环,它真的很令人困惑。我希望能弄清楚我是否在正确的轨道上。
谢谢。
如果您想在水果列表周围构建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.list
在items
类之外是不可访问的,因此没有办法在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));
理想情况下,如果您的列表中有description
和unitCost
,您可以将所有<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>");