如何获取数组中相同元素的索引..?

时间:2013-05-09 06:10:08

标签: c# asp.net

我试图使用

找到我的数组元素的索引
int[] arr = { 10, 20, 10 };
for ( int i; i,arr.length; i++)
{
int Tempval = arr[i];
index = Array.IndexOf(arr, Tempval);
console.writeline(index);
}

但它返回10的相同索引,即每次0。 我怎么能控制它.. ?? 请帮忙。

此致

3 个答案:

答案 0 :(得分:0)

这样做:

int[] arr = { 10, 20, 10 };
for ( int i=0; i<arr.length; i++)
{
int Tempval = arr[i];
index = Array.IndexOf(arr, Tempval);
console.writeline(index);
}

答案 1 :(得分:0)

使用LINQ,您可以:

int[] arr = { 10, 20, 10 };
var result =
              arr.Select((r, index) => new { Value = r, Index = index })
             .GroupBy(item => item.Value)
             .Where(grp => grp.Count() > 1)
             .Select(r => new { Indexes = r.Select(t => t.Index).ToArray() })
             .FirstOrDefault();

输出:

foreach (var value in result.Indexes)
    Console.WriteLine(value);

输出将是:

0
2

答案 2 :(得分:-2)

你已经在使用循环而我是你的索引,为什么要再次找到索引?

int[] arr = { 10, 20, 10 };
for ( int i=0; i<arr.length; i++)
{
 int Tempval = arr[i];
 index = Array.IndexOf(arr, Tempval);
 console.writeline(i);
}

如果您想要所有索引,

        public IEnumerable<int> FindIndexes(int[] array, int value)
        {
            for (int i = 0; i < array.Length; i++)
            {
                int Tempval = array[i];
                if (Tempval == value)
                {
                    yield return i;
                }
            }
        }

并致电FindIndexes(arr, 10);