score:0

you can't return ienumerable<string,string>. but you can return ienumerable<anonymous tyep>.

for example :

 var currencytables = cultureinfo.getcultures(culturetypes.specificcultures)
            .select(s => new regioninfo(s.lcid))
            .select(r => new
            {
                iso = r.isocurrencysymbol,
                name = r.currencyenglishname
            }).groupby(s => s.iso)
            .orderby(r =>r.key)
            .select(a => new { iso = a.key, name = a.first().name });

and you can return ienumerable<currencytable>. for example:

    var currencytables = cultureinfo.getcultures(culturetypes.specificcultures)
        .select(s => new regioninfo(s.lcid))
        .select(r => new
        {
            iso = r.isocurrencysymbol,
            name = r.currencyenglishname
        }).groupby(s => s.iso)
        .orderby(r =>r.key)
        .select(a => new currencytable{ iso = a.key, name = a.firstordefault().name });

score:3

this one returns all currencysymbols with its first distinct english currency name

var currencysymbols =
        cultureinfo.getcultures(culturetypes.specificcultures) //only specific cultures contain region information
       .select(x => new regioninfo(x.lcid))
       .groupby(x => x.isocurrencysymbol)
       .select(x => new currencytable() {
            iso = x.key,
            name = x.select(y => y.currencyenglishname).distinct().firstordefault()
        });

and here goes the linq-version:

var symbols = from x in cultureinfo.getcultures(culturetypes.specificcultures)
                  let region = new regioninfo(x.lcid)
                  group region by region.isocurrencysymbol into g
                  let names = from r in g select r.currencyenglishname
                  select new currencytable() {
                      iso = g.key,
                      name = names.firstordefault()
                  };

Related Query