web-dev-qa-db-fra.com

Obtenir l'index d'un objet dans une liste à l'aide de Linq

Je suis nouveau à Linq. J'ai une table Customers.ID, FullName, Organization, Location étant les colonnes. J'ai une requête dans Sqlite qui me renvoie 2500 enregistrements de clients. Je dois trouver l'index du client où ID = 150 par exemple à partir de cet ensemble de résultats. C'est une liste de clients. Le jeu de résultats de la requête est ordonné par organisation. J'ai essayé avec FindIndex et IndexOf mais obtenant des erreurs pour le premier et -1 pour le second. Alors, comment faut-il procéder? Merci.

38
RookieAppler

Vous n'avez pas besoin d'utiliser LINQ, vous pouvez utiliser FindIndex of List<T>:

int index = customers.FindIndex(c => c.ID == 150);
79
Tim Schmelter

Linq to Objects a surchargé Select method

customers.Select((c,i) => new { Customer = c, Index = i })
         .Where(x => x.Customer.ID == 150)
         .Select(x => x.Index);

Gardez à l'esprit que vous devez avoir en mémoire List<Customer> pour utiliser cette méthode Linq to Objects.

32
Sergey Berezovskiy