Search code examples
c#.netarrayslinq

Find multiple index in array


Say I have an array like this

  string [] fruits = {"watermelon","apple","apple","kiwi","pear","banana"};

Is there an built in function that allows me to query all the index of "apple" ? For example,

  fruits.FindAllIndex("apple"); 

will return an array of 1 and 2

If there is not, how should I implement it?

Thanks!


Solution

  • One way would be to write like this:

    var indices = fruits
                    .Select ((f, i) => new {f, i})
                    .Where (x => x.f == "apple")
                    .Select (x => x.i);
    

    Or the traditional way:

    var indices = new List<int>();
    for (int i = 0; i < fruits.Length; i++)
        if(fruits[i] == "apple")
            indices.Add(i);