Powiedz, że mam klasę, Customer
która ma właściwość FirstName
. Więc mam List<Customer>
.
Czy można użyć LINQ do sprawdzenia, czy lista ma klienta Firstname = 'John'
w jednym wyciągu ... jak?
Powiedz, że mam klasę, Customer
która ma właściwość FirstName
. Więc mam List<Customer>
.
Czy można użyć LINQ do sprawdzenia, czy lista ma klienta Firstname = 'John'
w jednym wyciągu ... jak?
Odpowiedzi:
LINQ definiuje metodę rozszerzenia, która jest idealna do rozwiązania tego konkretnego problemu:
using System.Linq;
...
bool has = list.Any(cus => cus.FirstName == "John");
upewnij się, że odwołujesz się do System.Core.dll, tam mieszka LINQ.
Odpowiedź Zvolkova jest idealna, aby dowiedzieć się, czy istnieje taki klient. Jeśli chcesz później skorzystać z klienta, możesz:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
Wiem, że nie o to pytasz, ale pomyślałem, że uprzedzę kolejne pytanie :) (Oczywiście, to znajdzie tylko pierwszego takiego klienta ... aby znaleźć je wszystkie, po prostu użyj normalna where
klauzula).
Jedna z opcji dla następujących pytań (jak znaleźć klienta, który może mieć dowolną liczbę imion):
List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));
lub w celu pobrania klienta z csv podobnej listy
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 będzie zerowy, jeśli nie będzie klienta o imieniu „John”.
Spróbuj tego, mam nadzieję, że ci to pomoże.
if (lstCustumers.Any(cus => cus.Firstname == "John"))
{
//TODO CODE
}