web-dev-qa-db-fra.com

Obtenir l'index d'un élément particulier dans un tableau

je veux récupérer l'index d'un tableau, mais je ne connais qu'une partie de la valeur réelle dans le tableau. Par exemple, je stocke le nom de l'auteur dans le tableau de manière dynamique. "auteur = 'xyz'" contenant quelque chose comme l'auteur car je ne connais pas la partie valeur comment procéder.

64
Mac

Vous pouvez utiliser FindIndex

 var index = Array.FindIndex(myArray, row => row.Author == "xyz");

Edit: Je vois que vous avez un tableau de chaînes, vous pouvez utiliser n’importe quel code pour correspondre, voici un exemple avec un simple contient:

 var index = Array.FindIndex(myArray, row => row.Contains("Author='xyz'"));

Peut-être avez-vous besoin de faire correspondre en utilisant un expression régulière ?

119
GvS

essayez Array.FindIndex(myArray, x => x.Contains("author"));

10
rpfaraco
     int i=  Array.IndexOf(temp1,  temp1.Where(x=>x.Contains("abc")).FirstOrDefault());
9
TalentTuner

Les réponses précédentes ne fonctionneront que si vous connaissez la valeur exacte que vous recherchez - la question indique que seule une valeur partielle est connue.

Array.FindIndex(authors, author => author.Contains("xyz"));

Cela renverra l'index du premier élément contenant "xyz".

7
TabbyCool

Extension FindIndex

static class ArrayExtensions
{
    public static int FindIndex<T>(this T[] array, Predicate<T> match)
    {
        return Array.FindIndex(array, match);
    }
}

Usage

int[] array = { 9,8,7,6,5 };

var index = array.FindIndex(i => i == 7);

Console.WriteLine(index); // Prints "2"

Voici un violon avec.


Bonus: extension d'index

J'ai écrit cette première en ne lisant pas la question correctement ...

static class ArrayExtensions
{
    public static int IndexOf<T>(this T[] array, T value)
    {
        return Array.IndexOf(array, value);
    }   
}

Usage

int[] array = { 9,8,7,6,5 };

var index = array.IndexOf(7);

Console.WriteLine(index); // Prints "2"

Voici un violon avec.

1