2013-04-22 46 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