[C#] Linq를 사용하여 객체 목록에 값이 있는지 검색

Customer속성 이있는 클래스가 있다고 가정 해보십시오 FirstName. 그리고 나는이 List<Customer>.

LINQ를 사용하여 목록 Firstname = 'John'에 단일 명세서 로 고객이 있는지 확인할 수 있습니까? 어떻게?



답변

LINQ는이 정확한 문제를 해결하기에 완벽한 확장 방법을 정의합니다.

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

LINQ가있는 System.Core.dll을 참조하십시오.


답변

zvolkov의 답변은 그러한 고객이 있는지 알아내는 완벽한 방법입니다. 나중에 고객 을 사용해야 하는 경우 다음 을 수행 할 수 있습니다.

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


답변

Linq를 사용하면 람다를 사용하지 않는 많은 가능성이 있습니다.

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


답변

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


답변

내가 발견하기 전에 사용한 기술 .Any():

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


답변

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

이름이 “John”인 고객이 없으면 john은 null입니다.