转换词典<;字符串,字符串>;.KeyCollection到string[].Net 3.5

本文关键字:字符串 string Net gt lt 转换 KeyCollection | 更新日期: 2023-09-27 18:00:00

我正在尝试转换此AddressParser(http://usaddress.codeplex.com/)从.Net 4.0到.Net 3.5,我遇到了一个小问题。

我在下面的评论行中收到一个cannot convert from 'System.Collections.Generic.Dictionary<string,string>.KeyCollection' to 'string[]'错误。它特别强调rangelessSecondaryUnits.Keys

任何帮助转换这将是美妙的!

private static Dictionary<string, string> rangelessSecondaryUnits =
            new Dictionary<string, string>()
            {
                { "BA?SE?ME?N?T", "BSMT" },
                { "FRO?NT", "FRNT" },
                { "LO?BBY", "LBBY" },
                { "LOWE?R", "LOWR" },
                { "OFF?I?CE?", "OFC" },
                { "PE?N?T?HO?U?S?E?", "PH" },
                { "REAR", "REAR" },
                { "SIDE", "SIDE" },
                { "UPPE?R", "UPPR" }
            };
var rangelessSecondaryUnitPattern =
                @"(?<SECONDARYUNIT>" +
                string.Join(
                    "|",
                    string.Join("|", rangelessSecondaryUnits.Keys)) + //ERROR ON THIS LINE
                @")'b";

转换词典<;字符串,字符串>;.KeyCollection到string[].Net 3.5

移除一个string.Join

var rangelessSecondaryUnitPattern =
        @"(?<SECONDARYUNIT>" +
        string.Join("|", rangelessSecondaryUnits.Keys.ToArray()) +
        @")'b";

除了ToArray之外,您的错误是在.NET3.5中没有占用params string[]的过载。但是,您的外部string.join什么也没做,因为您的内部string.Join正在返回一个字符串。