Digamos que tengo una clase Customer
que tiene una propiedad FirstName
. Entonces tengo un List<Customer>
.
¿Se puede usar LINQ para encontrar si la lista tiene un cliente Firstname = 'John'
en una sola declaración ... cómo?
Digamos que tengo una clase Customer
que tiene una propiedad FirstName
. Entonces tengo un List<Customer>
.
¿Se puede usar LINQ para encontrar si la lista tiene un cliente Firstname = 'John'
en una sola declaración ... cómo?
Respuestas:
LINQ define un método de extensión que es perfecto para resolver este problema exacto:
using System.Linq;
...
bool has = list.Any(cus => cus.FirstName == "John");
asegúrese de hacer referencia a System.Core.dll, ahí es donde vive LINQ.
La respuesta de zvolkov es la perfecta para saber si existe tal cliente. Si necesita utilizar al cliente después, puede hacer lo siguiente:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
Sé que esto no es lo que estabas preguntando, pero pensé que preferiría una pregunta de seguimiento :) (Por supuesto, esto solo encuentra el primer cliente de este tipo ... para encontrarlos a todos, solo usa un where
cláusula normal .)
Una opción para la siguiente pregunta (cómo encontrar un cliente que pueda tener cualquier número de nombres):
List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));
o para recuperar al cliente del csv de una lista similar
string input = "John,Max,Pete";
List<string> names = input.Split(',').ToList();
customer = customers.FirstOrDefault(cus => names.Contains(cus.FirstName));
customerList.Any(x=>x.Firstname == "John")
List<Customer> list = ...;
Customer john = list.SingleOrDefault(customer => customer.Firstname == "John");
John será nulo si no existe un cliente con un nombre de pila "John".
Otra posibilidad
if (list.Count(customer => customer.Firstname == "John") > 0) {
//bla
}
Prueba esto, espero que te ayude.
if (lstCustumers.Any(cus => cus.Firstname == "John"))
{
//TODO CODE
}