Скажем, у меня есть класс, у 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
}