确定我在阵列中的位置

时间:2013-01-19 18:49:22

标签: c# .net arrays stringbuilder

我在C#中有一个字符串数组,如下所示:

string[] sites = new string[] {
    "http://foobar.com",
    "http://asdaff.com",
    "http://etc.com"
};

我在foreach中使用此数组,我希望能够添加“类型”值1,2或3,具体取决于我当前正在迭代的网站。我正在使用这些网站中的StringBuilder连接数据。现在,我可以将网站存储为varchar,但它会非常简洁,因为此数组永远不会更改为将数字与字符串相关联并以此方式构建。

4 个答案:

答案 0 :(得分:6)

使用for循环代替foreach

for(int i = 0; i < sites.Length; i++)
{
    // use sites[i]
}

答案 1 :(得分:3)

LINQ的Select可用于将索引投影到集合上。

sites.Select((x, n) => new { Site = x, Index = n })

答案 2 :(得分:2)

您可以使用字典 - Dictionary<int, string>(或Dictionary<string, int>)。

var sitesWithId = new Dictionary<string, int>
{
  new { "http://foobar.com", 1},
  new { "http://asdaff.com", 2},
  new { "http://etc.com", 3}
}

另一个选择是使用List<string>IndexOf来查找索引。

var sites = new List<string> {
    "http://foobar.com",
    "http://asdaff.com",
    "http://etc.com"
};

var foobarIndex = sites.IndexOf("http://foobar.com");

第三个选项,使用Array的静态IndexOf方法,而不是根本不更改数组:

var foobarIndex = Array.IndexOf(sites, "http://foobar.com");

答案 3 :(得分:1)

尝试使用for循环;

for(int i = 0; i < sites.Length; i++)
{
    Console.WriteLine(sites[i]);
}

像这样使用sites[]数组的元素;

sites[1]
sites[2]
sites[3]

或者您可以使用Dictionary<TKey, TValue>作为Oded suggest