2017-05-03 21 views
2

我已经创建了IEnumerable的单个对象 想让它的字典类型对象来处理键和值。如何从C#中的CultureTypes对象获取pair值?

想要从文化中提取货币符号和名称。

IEnumerable<string> currencySymbols = CultureInfo.GetCultures(CultureTypes.SpecificCultures) //Only specific cultures contain region information 
      .Select(x => (new RegionInfo(x.LCID)).ISOCurrencySymbol) 
      .Distinct() 
      .OrderBy(x => x); 
      foreach(string s in currencySymbols) 
      { 
       CurrencyTable tbl = new CurrencyTable(); 
       tbl.Iso = s; 
       tbl.Name = s; 
      } 

我要像下面

IEnumerable<string,string> 

怎么可能呢? CurrencyTable是包含ID | Iso | Name类提起

+0

像'的IEnumerable <字符串,字符串>甲事情'不C#存在。你想达到什么目的?你想按名称访问'Dictionary',string,string>吗? – ChriPf

+0

我想获得所有的ISO和货币名称存储在数据库中.. –

+0

看到第一个答案http://stackoverflow.com/questions/16109121/data-member-validation-iso-4217-currency-and-639-1语言想要获得名称的iso并且想要存储在数据库中。 –

回答

3

这一个返回所有currencySymbols其第一个不同的英文货币名称

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() 
     }); 

,并在这里不用的LINQ的版本:

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() 
        }; 
0

你不能返回IEnumerable<string,string>。但你可以返回IEnumerable<anonymous tyep>

例如:

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 }); 

而且你可以返回IEnumerable<CurrencyTable>。 例如:

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 });