2013-04-30 82 views
0

如果这是一个愚蠢的问题,我很抱歉,但如果我想根据文化返回列,最好的方法是什么?Linq基于文化选择

我想如果在LINQ select语句

有别人的或做的延伸: 说我使用的代码先用LINQ和有一类国家,一个空的名称和Name_fr,Name_no,名_ * *等。

public static IEnumerable<Country> C(this IEnumerable<Country> Countries) 
    { 
     if (Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName == "en") 
     { 
      return Countries.Select(x => new Country { x.Name = x.Name_en }); 
     } 
    } 

有没有一种标准的方式比STRX的字符串数据更基于文化? 对不起,如果这是重复的,但我找不到答案。

干杯,鹰

回答

1

尝试这样

public static IEnumerable<Country> C(this IEnumerable<Country> Countries) 
    { 
     var propName = string.Format("Name_{0}", Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName); 
     var localizedNameProp = typeof(Country).GetProperty(propName); 

     return Countries.Select(x => new Country { Name = localizedNameProp.GetValue(x, null).ToString() }); 
    } 
+0

感谢。希望有一种不同的方法,但我会坚持使用扩展方法:) – Hawk 2013-05-01 08:32:38