获取数组上的foreach序列号

时间:2013-05-02 14:51:45

标签: c# asp.net foreach

我有一个数组s [],我用它来设置:

    string [] s;
    s = data.Split(',');

我可以使用foreach获取s中的元素:

foreach (string c in s)
                    {
                        list.Items.Add(c);  
                    }

但是我想写一个接近c值的c的序列,即它将显示在列表中:

0 hello
1 world
2 earth

我没有在foreach中使用计数器,还有其他方法吗?

3 个答案:

答案 0 :(得分:3)

你必须使用一个计数器。您可以在foreach中使用一个,或使用for循环并使用其计数器。

编辑:好吧,如果你从一个空列表开始,你可以在循环中使用list.Items.Count来打印列表中当前的项目数,尽管这是真的不是一个很好的方法。

// ugly
foreach (string c in s)
{
    list.Items.Add(list.Items.Count + " " + c);  
}

答案 1 :(得分:3)

显而易见的是使用常规循环:

for (int i = 0; i < c.Length; i++) {
  list.Items.Add(i.ToString() + " " + c[i]);
}

如果您绝对想要使用foreach而不使用计数器变量,则可以使用Select将每个字符串与其索引捆绑在一起:

foreach (var c in s.Select((str, i) => new { Value = str, Index = i })) {
  list.Items.Add(c.Index.ToString() + " " + c.Value);
}

答案 2 :(得分:0)

没有其他方法可以给你的代码。

要么你这样做:

 string [] s= {"0 Hello","1 World", "2 earth"};
 //your simple foreach loop

或者你这样做:

int counter=0;
foreach (string c in s)
{
    list.Items.Add(counter++ + " " + c);  
}

或更改您的代码,使用for循环

foreach (int i=0;i<s.Length;i++)
{
    list.Items.Add(i + " " + c[i]);  
}