2013-03-01 50 views
-1

我想要一個數組,我有一個類,然後使用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循環和它真的混亂。如果我在正確的軌道上,我希望能夠澄清一些問題。

謝謝。

+0

hozdamn轉換您要在列表中分配其轉換爲字符串[]那麼你可以使用擴展方法將其轉換成一個列表中的值,也可以直接與陣列 – MethodMan 2013-03-01 17:17:43

+1

你會工作需要更具體 - 什麼是你不希望工作的「不工作」?你的代碼有很多錯誤讓我們猜測問題出在哪裏。 – 2013-03-01 17:18:04

+0

如果你想訪問該值變化'私人的String []列表;''要保護的String []列表;' – MethodMan 2013-03-01 17:29:20

回答

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

你在哪裏建立HTML ...? – MethodMan 2013-03-01 17:22:35

+0

我試過以上,但我不斷收到消息 – hozdaman 2013-03-01 17:24:09

+0

這是因爲你是如何列表中定義Hozdaman ..看看其他的意見/答案也是爲什麼你需要一類「的名單並沒有在當前的背景下存在」你正在定義序數值的項目..?害羞不只是有一個字符串[]定義的值..? – MethodMan 2013-03-01 17:25:57

0

嘗試

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

你在哪裏建立HTML ...? – MethodMan 2013-03-01 17:23:00

+0

我通過page_load使用stringbuilders構建html – hozdaman 2013-03-01 18:00:33

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

您的代碼存在一些問題。首先,items.list無法在items類之外訪問,因此無法在page_load事件中遍歷它。你必須讓它訪問:

public class items 
{ 
    private string[] list; 

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

    // ... 
} 

現在,你就可以實例化items類很喜歡現在做的page_load:通過對List財產

items fruit = new items(); 

和環您items類:

foreach(string f in fruit.List) 
{ 
    sb.Append(String.Format("{0}", f)); 
} 
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>"); 
+0

那麼'

'和結尾'
'標籤 – MethodMan 2013-03-01 17:30:28

+0

@DJKRAZE;他已經有'

'標記,結尾處'
'標記可以在'ForEach()'之後添加,就像我上面已經更新的那樣。 – Kaf 2013-03-01 17:37:36

+0

我懷疑OP會理解Linq,如果他說他不懂foreach但是很好的答案Kaf – MethodMan 2013-03-01 17:38:50