Say I have a class Customer
which has a property FirstName
. Then I have a List<Customer>
.
Can LINQ be used to find if the list has a customer with Firstname = 'John'
in a single statement.. how?
LINQ defines an extension method that is perfect for solving this exact problem:
using System.Linq;
...
bool has = list.Any(cus => cus.FirstName == "John");
make sure you reference System.Core.dll, that's where LINQ lives.
zvolkov's answer is the perfect one to find out if there is such a customer. If you need to use the customer afterwards, you can do:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
I know this isn't what you were asking, but I thought I'd pre-empt a follow-on question :) (Of course, this only finds the first such customer... to find all of them, just use a normal where
clause.)
One option for the follow on question (how to find a customer who might have any number of first names):
List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));
or to retrieve the customer from csv of similar list
string input = "John,Max,Pete";
List<string> names = input.Split(',').ToList();
customer = customers.FirstOrDefault(cus => names.Contains(cus.FirstName));
Using Linq you have many possibilities, here one without using lambdas:
//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")
The technique i used before discovering .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 will be null if no customer exists with a first name of "John".
Try this, I hope it helps you.
if (lstCustumers.Any(cus => cus.Firstname == "John"))
{
//TODO CODE
}
Another possibility
if (list.Count(customer => customer.Firstname == "John") > 0) {
//bla
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With