0
4

3 に答える 3

2

Your first Select seems redundant. You should generally filter first (using Where) then Select.

EDIT: Doh - I missed the new RegionInfo(). What about:

var ccy = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
              .Select(c => new RegionInfo(c.LCID))
              .First(ri => ri.ISOCurrencySymbol == "ILS").CurrencySymbol;

That assumes you know you are dealing with a valid ISOCurrencySymbol. If you can't make that assumption then use FirstOrDefault and check the result for null first before accessing the CurrencySymbol.

One additional point to note is that if you are performing this query frequently you could cache the result of CultureInfo.GetCultures(CultureTypes.SpecificCultures)), although this really is a micro optimisation.

于 2013-01-27T08:07:04.670 に答える
1

述語を受け入れるオーバーロードされたFirstWhereメソッドを使用できます( andを結合するためFirst

 CultureInfo.GetCultures(CultureTypes.SpecificCultures)
            .Select(c => new RegionInfo(c.LCID))
            .First(r => r.ISOCurrencySymbol == "ILS")
            .CurrencySymbol;

このコードは、コードが行うこととまったく同じことを行います。しかし実際にはFirstOrDefault、ISO 通貨記号の地域を使用して取得しようとする必要があります。リージョンが見つかった場合は、それを使用します。

var isoCurrency = "ILS"
var region =  CultureInfo.GetCultures(CultureTypes.SpecificCultures)
                        .Select(c => new RegionInfo(c.LCID))
                        .FirstOrDefault(r => r.ISOCurrencySymbol == isoCurrency);
if (region != null)
    // get region.CurrencySymbol
于 2013-01-27T08:17:23.363 に答える
0

これはそれを行う必要があります:

  var t = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
                     .Select(d => new RegionInfo(d.LCID))
                     .First(f => f.ISOCurrencySymbol == "ILS").CurrencySymbol;
于 2013-01-27T08:17:55.570 に答える