【问题标题】:Convert Dictionary<string,string>.KeyCollection to string[] .Net 3.5将 Dictionary<string,string>.KeyCollection 转换为 string[] .Net 3.5
【发布时间】:2014-06-10 01:56:18
【问题描述】:

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

我在下面的注释行中收到 cannot convert from 'System.Collections.Generic.Dictionary&lt;string,string&gt;.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";

【问题讨论】:

  • 试试rangelessSecondaryUnits.Keys.ToArray(),也许??

标签: c# .net-4.0 .net-3.5


【解决方案1】:

删除您的string.Join之一

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

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

【讨论】:

  • 我不知道为什么,这就是代码来自源的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
相关资源
最近更新 更多