Скажем, у меня есть класс Customer, у которого есть свойство FirstName. Затем у меня есть Список.
Может ли LINQ использоваться, чтобы найти, имеет ли список клиента с именем Firstname = 'John' в одном заявлении.. как?
Скажем, у меня есть класс Customer, у которого есть свойство FirstName. Затем у меня есть Список.
Может ли LINQ использоваться, чтобы найти, имеет ли список клиента с именем Firstname = 'John' в одном заявлении.. как?
LINQ определяет метод расширения, который идеально подходит для решения этой точной проблемы:
using System.Linq;
...
bool has = list.Any(cus => cus.FirstName == "John");
убедитесь, что вы ссылаетесь на System.Core.dll, где живет LINQ.
Ответ 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();
Метод, который я использовал до обнаружения .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 будет null, если клиент не существует с именем "John".
Попробуйте это, я надеюсь, это вам поможет.
if (lstCustumers.Any(cus => cus.Firstname == "John"))
{
//TODO CODE
}
customerList.Any(x=>x.Firstname == "John")
Другая возможность
if (list.Count(customer => customer.Firstname == "John") > 0) {
//bla
}