如何获得两个foreach中的所有行?

时间:2016-01-26 10:22:20

标签: c#

我不知道如何使用第二个foreach的第一行获得第一次foreach运行的第一行。 第一个foreach的第二行与第二个foreach的第二行一起运行。

因为我将所有数据都输入List<>和foreach两个列表。

我的代码如下:

for (int i = valuesFrom; i < valuesTo; i++)
{
    values = name + " " + i;
    lstAliasImage.Add(values);
}
for (int j = 0; j < lstImgAdded.Items.Count; j++)
{
    string imgPath = lstImgAdded.Items[j].Text;
    lstNameImage.Add(imgPath);
}

foreach (var alias in lstAliasImage)
{
    foreach (var items in lstNameImage)
    {
        txtUser.Text = alisa;
        Save(items + " " + txtUser.Text);
    }
}

2 个答案:

答案 0 :(得分:2)

你可以用一个好的旧for周期来做到这一点:

for (int i = 0; i < lstAliasImage.Count; i++) {
    txtUser.Text = listAliasImage.ElementAt(i);
    Save(lstNameImage.ElementAt(i) + " " + txtUser.Text);
}

我假设您alisa表示alias。另外,我假设元素数量相同。如果您的类型定义了索引器,那么您可以使用[i]代替ElementAt(i)

答案 1 :(得分:1)

使用for循环可以解决您的问题;

for (int i = 0; i < lstAliasImage.Count; i++)
{
        txtUser.Text = lstAliasImage[i];
        Save(lstNameImage[i] + " " + txtUser.Text);
}

但最好以不同的方式解决这个问题。由于两个列表都是相关的,因此您应该创建一个结构,并将其存储在列表中。如果两个列表的长度不同,至少要避免错误。像

这样的东西
public struct ImageStruct
{
    public String alias;
    public String name;
}

List<ImageStruct> images = new List<ImageStruct>();

for (int i = valuesFrom; i < valuesTo; i++)
{
    images.Add(new ImageStruct()
    {
        alias="alias " + i,
        name="name " + i
    });
}

foreach (var item in images)
{
    txtUser.Text = item.alias;
    Save(item.name + " " + item.alias);
}

我希望你能得到这个想法(我没有测试上面的代码)。