public IBeverage ToBrew() { IBeverage[] finishedDrinks = new IBeverage[] { new Latte(), new Americano(), new Cappuccino(), new Macchiato(), new Mocha(), new Espresso() }; IBeverage finishedDrink = finishedDrinks.FirstOrDefault(f => Enumerable.SequenceEqual(f.GetIngredients.OrderBy(i => i), this.Ingredients.OrderBy(i => i)) ); finishedDrink = (finishedDrink == null) ? new UnknownDrink() : finishedDrink; Console.WriteLine("Brew complete."); Console.WriteLine(finishedDrink.GetName()); return(finishedDrink); }