Digamos que eu tenha uma classe Customer
que tenha uma propriedade FirstName
. Então eu tenho umList<Customer>
.
O LINQ pode ser usado para descobrir se a lista possui um cliente Firstname = 'John'
em uma única instrução. Como?
Digamos que eu tenha uma classe Customer
que tenha uma propriedade FirstName
. Então eu tenho umList<Customer>
.
O LINQ pode ser usado para descobrir se a lista possui um cliente Firstname = 'John'
em uma única instrução. Como?
Respostas:
O LINQ define um método de extensão perfeito para resolver esse problema exato:
using System.Linq;
...
bool has = list.Any(cus => cus.FirstName == "John");
certifique-se de referenciar System.Core.dll, é onde mora o LINQ.
A resposta de zvolkov é perfeita para descobrir se existe um cliente assim. Se você precisar usar o cliente posteriormente, poderá:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
Sei que não era isso que você estava perguntando, mas pensei em antecipar uma pergunta subsequente :) (é claro, isso só encontra o primeiro cliente desse tipo ... para encontrar todos eles, basta usar um where
cláusula normal .)
bool
resultado, então nesse caso .Any
ou .FindIndex
é usado aqui o que é rápido ?
Uma opção para a pergunta a seguir (como encontrar um cliente que possa ter qualquer número de nomes):
List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));
ou recuperar o cliente do csv da lista semelhante
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 se não existir um cliente com o primeiro nome de "John".
Tente isso, espero que ajude você.
if (lstCustumers.Any(cus => cus.Firstname == "John"))
{
//TODO CODE
}