Processing a C# Dictionary using LINQ
c#, linq
Solution
If you want to group countries by code, then you don't need two dictionaries. Use Enumerable.GroupBy
foreach(var codeGroup in countries.GroupBy(c => c.CountryCode))
{
foreach(var country in codeGroup)
Console.WriteLine(country.CountryName);
Console.WriteLine();
}
Or just use your `countriesDictionary` (it already has countries grouped by code):
foreach(var kvp in countriesDictionary)
{
foreach(var country in kvp.Value)
Console.WriteLine(country.CountryName);
Console.WriteLine();
}
Problem
How do I write the "// Display using Foreach" loop implementation using LINQ Lambda Expression / Statemene Expression? I want to simplify my development and avoid nested foreach loops as much as possible. I am trying to include more logic with in the second foreach statement and I want to use Lambda / Statement expression. ``` internal class Program { internal class Country { public string CountryName { get; set; } public int CountryCode { get; set; } } static void Main(string[] args) { List<Country> countries = new List<Country>() { new Country{CountryName = "India", CountryCode=1}, new Country{CountryName = "Andaman Nicobar", CountryCode=1}, new Country{CountryName = "United States of America", CountryCode=2}, new Country{CountryName = "Alaska", CountryCode=2}, new Country{CountryName = "Hawaii", CountryCode=2}, new Country{CountryName = "United Kingdom", CountryCode=3}, new Country{CountryName = "Australia", CountryCode=4} }; Dictionary<int, List<Country>> countriesDictionary = new Dictionary<int, List<Country>>(); foreach (Country country in countries) { if (!countriesDictionary.ContainsKey(country.CountryCode)) countriesDictionary.Add(country.CountryCode, new List<Country>()); countriesDictionary[country.CountryCode].Add(country); } // Display using Foreach foreach (int key in countriesDictionary.Keys) { List<Country> dCountries = countriesDictionary[key]; foreach (Country country in dCountries) { if (country.CountryCode.Equals(key)) { Console.WriteLine(country.CountryName); } } Console.WriteLine(); } Console.ReadLine(); } ``` Please suggest.