Disons que j'ai une classe Customer qui a une propriété FirstName. Ensuite, j'ai une liste.
Peut-on utiliser LINQ pour déterminer si la liste a un client avec Firstname = 'John' dans une seule instruction? Comment?
LINQ définit une méthode d'extension idéale pour résoudre ce problème:
using System.Linq;
...
bool has = list.Any(cus => cus.FirstName == "John");
assurez-vous de référencer System.Core.dll, c’est là que vit LINQ.
la réponse de zvolkov est la réponse idéale pour savoir si il existe un tel client. Si vous avez besoin de utiliser le client après, vous pouvez faire:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
Je sais que ce n’est pas ce que vous demandiez, mais j’ai pensé que j’empêcherais de poser une question suivante :) (Bien sûr, cela ne fait que trouver le premier ce client ... pour tous les trouver , utilisez simplement une clause where
normale.)
Une option pour la question suivante (comment trouver un client pouvant porter un nombre quelconque de prénoms):
List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));
ou pour récupérer le client de CSV de liste similaire
string input = "John,Max,Pete";
List<string> names = input.Split(',').ToList();
customer = customers.FirstOrDefault(cus => names.Contains(cus.FirstName));
En utilisant Linq, vous avez beaucoup de possibilités, ici une sans utiliser de lambdas:
//assuming list is a List<Customer> or something queryable...
var hasJohn = (from customer in list
where customer.FirstName == "John"
select customer).Any();
customerList.Any(x=>x.Firstname == "John")
La technique que j'ai utilisée avant de découvrir .Any()
:
var hasJohn = (from customer in list
where customer.FirstName == "John"
select customer).FirstOrDefault() != null;
List<Customer> list = ...;
Customer john = list.SingleOrDefault(customer => customer.Firstname == "John");
john sera null si aucun client n'existe avec un prénom "John".
Une autre possibilité
if (list.Count(customer => customer.Firstname == "John") > 0) {
//bla
}
Essayez ceci, j'espère que cela vous aidera.
if (lstCustumers.Any(cus => cus.Firstname == "John"))
{
//TODO CODE
}