How can the linq statement here be altered so that it finds the company(s) containing the user with the substring of "third"?
At the moment it only works when searching for the full user name i.e. contains("third user") because it is searching for a match in the list, not the string.
class Company
{
public Company(List<User> users) { this.Users = users; }
public List<User> Users { get; set; }
}
class User
{
public User(string name) { this.Name = name; }
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Company> companies = new List<Company>();
Company company1 = new Company(new List<User>(){ new User("first user"), new User("second user") });
Company company2 = new Company(new List<User>() { new User("third user"), new User("fourth user") });
companies.Add(company1);
companies.Add(company2);
companies = companies
.Where(company => company.Users.Select(user => user.Name)
.Contains("third")).ToList();
}
}
You should call string.Contains
on the user.Name
:
companies = companies
.Where(company => company.Users.Any(user => user.Name.Contains("third")))
.ToList();
See it working online: ideone
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