2013-04-22 29 views
0

我有一個爲每個循環如下:MessageBox.Show到可變

foreach (PCparts parts in items) 
{ 
    MessageBox.Show(parts.PartName); 
} 

循環返回以下列順序4倍的值:MOBO,GFX,CPU和RAM

現在的問題是,有沒有辦法將一個特定的值存儲到變量中,或者甚至只是將其顯示在其他地方,比如在標籤中或其他地方?例如,將GFX存儲到稍後可以使用的變量中。

如果你還沒有注意到,我把自己歸類爲新手,所以請不要太苛刻。我在嘗試學習。

+0

如何定義'PCParts'? – Sebivor 2013-04-22 02:07:54

+0

你怎麼知道你想要存儲「GFX」,而不是「CPU」,「MOBO」或「RAM」? – Blorgbeard 2013-04-22 02:09:53

+0

是'items'一個'List '集合,還是LINQ查詢的結果?我問的原因是,如果它是一個列表,您可以訪問列表中的單個對象並將名稱分配給不同的變量或列表;如果它是「IEnumerable」查詢結果,那麼枚舉完成後將丟失該數據。 – Tim 2013-04-22 02:10:02

回答

3

由於您有items定義爲List<PCParts>,只要items在範圍內,就可以隨時訪問列表中的對象。

因此,舉例來說,如果你有一個標籤(稱之爲lblName爲例子的緣故),那麼你可以這樣做:

lblName.Text = items[1].PartName; 

items[1]是在列表中的第二PCParts(GFX) 。

從本質上講,你有正弦列表,你已經存儲了數據並且可以檢索它。如果你正在尋找一個特定的項目,你需要知道你要找哪個項目。例如,要建立在你的每個循環:

for each (PCpart part in items) 
{ 

    if (part.PartName == "GFX") 
    { 
     lblName.Text = part.PartName; 
    } 
} 

您也可以使用類似的邏輯來選擇的值存儲在進一步使用一個變量:

string selectedPartName = items[1].PartName; 

不知道更多關於你是什麼試圖去做,很難給出更確切的答案。

+0

完美添。我知道你可以通過添加[#]來訪問列表或數組中的單個值,但問題是我在循環的聲明中添加了它。先生,再次謝謝你。 – user1830833 2013-04-22 02:22:28

+0

@ user1830833 - 不客氣。快樂的編碼! – Tim 2013-04-22 02:25:42

2

爲了給Tim提供一個不同但同樣有用的答案,如果它是Dictionary而不是ListPCParts更適合這種操作。您可以使用items["GFX"]等表達式訪問與"GFX"密鑰對應的值。

+0

+1 - 絕對是一個有效的解決方案。 – Tim 2013-04-22 02:24:12