Поиск, если значение существует в списке объектов с использованием Linq

Скажем, у меня есть класс Customer, у которого есть свойство FirstName. Затем у меня есть Список.

Может ли LINQ использоваться, чтобы найти, имеет ли список клиента с именем Firstname = 'John' в одном заявлении.. как?

Ответ 1

LINQ определяет метод расширения, который идеально подходит для решения этой точной проблемы:

using System.Linq;
...
    bool has = list.Any(cus => cus.FirstName == "John");

убедитесь, что вы ссылаетесь на System.Core.dll, где живет LINQ.

Ответ 2

Ответ zvolkov - это идеальный способ выяснить, есть ли такой клиент. Если вам нужно использовать клиента после этого, вы можете сделать:

Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
    // Use customer
}

Я знаю, что это не то, о чем вы спрашивали, но я подумал, что я предпочту следующий вопрос:) (Конечно, это только находит первого такого клиента... найти все из них, просто используйте обычное предложение where.)

Ответ 3

Один из вариантов ответа на вопрос (как найти клиента, у которого может быть любое количество первых имен):

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));

Ответ 4

Используя Linq, у вас много возможностей, здесь один без использования лямбда:

//assuming list is a List<Customer> or something queryable...
var hasJohn = (from customer in list
         where customer.FirstName == "John"
         select customer).Any();

Ответ 5

Метод, который я использовал до обнаружения .Any():

var hasJohn = (from customer in list
      where customer.FirstName == "John"
      select customer).FirstOrDefault() != null;

Ответ 6

List<Customer> list = ...;
Customer john = list.SingleOrDefault(customer => customer.Firstname == "John");

john будет null, если клиент не существует с именем "John".

Ответ 7

Попробуйте это, я надеюсь, это вам поможет.

 if (lstCustumers.Any(cus => cus.Firstname == "John"))
 {
     //TODO CODE
 }

Ответ 8

customerList.Any(x=>x.Firstname == "John")

Ответ 9

Другая возможность

if (list.Count(customer => customer.Firstname == "John") > 0) {
 //bla
}