我有一个使用托管dll的应用程序.其中一个dll返回一个通用字典:
Dictionary<string, int> MyDictionary;
Run Code Online (Sandbox Code Playgroud)
字典包含大小写的键.
另一方面,我得到一个潜在的密钥列表(字符串),但我不能保证这种情况.我试图使用键获取字典中的值.但是,由于案件不匹配,以下情况当然会失败:
bool Success = MyDictionary.TryGetValue( MyIndex, out TheValue );
Run Code Online (Sandbox Code Playgroud)
我希望TryGetValue会有一个像MSDN文档中提到的忽略大小写标志,但它似乎对通用词典无效.
有没有办法让字典的值忽略关键案例?有没有比使用正确的StringComparer.OrdinalIgnoreCase参数创建字典的新副本更好的解决方法?
如果我有一个Dictionary<String,...>是否有可能使方法ContainsKey不区分大小写?
这似乎是相关的,但我没有理解它:c#Dictionary:通过声明使Key不区分大小写
我有很多if,else if语句,我知道必须有更好的方法来做到这一点,但即使在搜索stackoverflow之后,我也不确定如何在我的特定情况下这样做.
我正在解析文本文件(账单)并根据账单上是否出现某些字符串将服务提供商的名称分配给变量(txtvar.Provider).
这是我正在做的一小部分样本(不要笑,我知道它很乱).总而言之,如果是,那么大约有300个.
if (txtvar.BillText.IndexOf("SWGAS.COM") > -1)
{
txtvar.Provider = "Southwest Gas";
}
else if (txtvar.BillText.IndexOf("georgiapower.com") > -1)
{
txtvar.Provider = "Georgia Power";
}
else if (txtvar.BillText.IndexOf("City of Austin") > -1)
{
txtvar.Provider = "City of Austin";
}
// And so forth for many different strings
Run Code Online (Sandbox Code Playgroud)
我想使用类似switch语句的东西更高效和可读,但我不确定如何比较BillText.我正在寻找这样的东西,但无法弄清楚如何使它工作.
switch (txtvar.BillText)
{
case txtvar.BillText.IndexOf("Southwest Gas") > -1:
txtvar.Provider = "Southwest Gas";
break;
case txtvar.BillText.IndexOf("TexasGas.com") > -1:
txtvar.Provider = "Texas Gas";
break;
case txtvar.BillText.IndexOf("Southern") > -1:
txtvar.Provider = "Southern Power & Gas"; …Run Code Online (Sandbox Code Playgroud) 有没有办法让C#编译器在方法中使用之前自动将ToLower()(或任何其他操作方法调用)应用于特定的方法参数?
//附加信息:其目的是使用具有不区分大小写的键的Dictionary.显然,我的第一种方法是完全错误的,因为我已经找到了一种完全不同的方法来解决字典本身,而不是它所访问的密钥.
我的错!我应该已经为你提供了这些信息.所以,不需要进一步的答案.无论如何,非常感谢!
在这种特殊情况下更好的方法:c#Dictionary:通过声明使Key不区分大小写