国に関する情報を取得するためのデータベース属性として RegionInfo.TwoLetterISORegionName を使用することを考えていました。RegionInfoGeoId を見るまでは、より堅牢なようです。
国際化をサポートするには、どれを保存しますか? GeoId から RegionInfo を作成するにはどうすればよいでしょうか?
乾杯、
ベリル
国に関する情報を取得するためのデータベース属性として RegionInfo.TwoLetterISORegionName を使用することを考えていました。RegionInfoGeoId を見るまでは、より堅牢なようです。
国際化をサポートするには、どれを保存しますか? GeoId から RegionInfo を作成するにはどうすればよいでしょうか?
乾杯、
ベリル
P/Invoke とGetGeoInfo関数を使用して、GeoID からいくつかの情報を取得できます。
    public static string GetGeoInfo(int geoId, SYSGEOTYPE geoType)
    {
        string s = new string('\0', 256);
        int size = GetGeoInfo(geoId, geoType, s, 256, 0);
        if (size <= 0)
            return null;
        return s.Substring(0, size - 1);
    }
    public enum SYSGEOTYPE
    {
        GEO_NATION = 0x0001,
        GEO_LATITUDE = 0x0002,
        GEO_LONGITUDE = 0x0003,
        GEO_ISO2 = 0x0004,
        GEO_ISO3 = 0x0005,
        GEO_RFC1766 = 0x0006,
        GEO_LCID = 0x0007,
        GEO_FRIENDLYNAME = 0x0008,
        GEO_OFFICIALNAME = 0x0009,
        GEO_TIMEZONES = 0x000A,
        GEO_OFFICIALLANGUAGES = 0x000B
    }
    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private extern static int GetGeoInfo(int geoId, SYSGEOTYPE geoType, string lpGeoData, int cchData, int language);
ただし、地理的な場所と地域の間に 1 対 1 の対応がない場合があることに注意してください。