Скажем, у меня есть класс, у Customer
которого есть свойство FirstName
. Тогда у меня есть List<Customer>
.
Можно ли использовать LINQ, чтобы узнать, есть ли в списке клиент с Firstname = 'John'
одним оператором ... как?
Скажем, у меня есть класс, у Customer
которого есть свойство FirstName
. Тогда у меня есть List<Customer>
.
Можно ли использовать LINQ, чтобы узнать, есть ли в списке клиент с Firstname = 'John'
одним оператором ... как?
Ответы:
LINQ определяет метод расширения, который идеально подходит для решения именно этой проблемы:
using System.Linq;
...
bool has = list.Any(cus => cus.FirstName == "John");
убедитесь, что вы ссылаетесь на System.Core.dll, там живет LINQ.
Ответ Зволкова является идеальным, чтобы выяснить, есть ли такой клиент. Если вам нужно использовать клиента впоследствии, вы можете сделать:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
Я знаю, что это не то, что вы спрашивали, но я подумал, что предпочитаю последующий вопрос :) (Конечно, это находит только первого такого клиента ..., чтобы найти их всех, просто используйте нормальное where
предложение.)
Один из вариантов ответа на вопрос (как найти клиента, который может иметь любое количество имен):
List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));
или получить клиента из csv аналогичного списка
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");
Джон будет нулевым, если не существует ни одного клиента с именем «Джон».
Попробуйте это, я надеюсь, это поможет вам.
if (lstCustumers.Any(cus => cus.Firstname == "John"))
{
//TODO CODE
}