using System.Collections.Generic;
using System.Linq.Expressions;
public static void Main()
var repository = new Repository();
string company = repository.GetFirst(c => c[0] == 'A');
Console.WriteLine(company);
repository.GetAll(c => c[0] == 'C')
.ToList().ForEach(Console.WriteLine);
public class Repository {
string[] companies = { "Consolidated Messenger", "Alpine Ski House", "Southridge Video", "City Power & Light",
"Coho Winery", "Wide World Importers", "Graphic Design Institute", "Adventure Works",
"Humongous Insurance", "Woodgrove Bank", "Margie's Travel", "Northwind Traders",
"Blue Yonder Airlines", "Trey Research", "The Phone Company",
"Wingtip Toys", "Lucerne Publishing", "Fourth Coffee" };
public string GetFirst(Func<string, bool> expression)
return companies.First(expression.Invoke);
public IEnumerable<string> GetAll(Func<string, bool> expression)
return companies.Where(expression.Invoke);