Dictionary.ContainsKey(entry)返回false

时间:2013-11-16 14:56:40

标签: c#

我有一个包含一些数字的字符串List。 我在mybuylist中有一些字符串在Dictionary列表中匹配。但是这个if条件总是返回False。好的mybuylist就像[34,45,58]和mcollection(key,value)一样{{565,5]},{[34,1]},{[78,9]} ......

public static Dictionary<string, int> mcollection = new Dictionary<string, int>();
public static List<string> mybuylist = new List<string>();

foreach (string entry in mybuylist) {

 if (mcollection.ContainsKey(entry))
    {
     //dosomething                     

    }

}

希望有人帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

可能是区分大小写的比较或键不匹配的问题。默认情况下,所有词典均为case-sensitiveAa不同。验证mybuylistmcollection中的值是否相同。

如下所示声明mcollection

public static Dictionary<string, int> mcollection = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);

这将忽略A&amp; a是一样的。

请参阅this

编辑1

class Program
{
    public static Dictionary<string, int> mcollection = new Dictionary<string, int>() { { "565", 5 }, { "34", 1 }, { "78", 9 } };
    public static List<string> mybuylist = new List<string>() { "34", "45", "58" };

    static void Main(string[] args)
    {
        foreach (string entry in mybuylist)
        {
            if (mcollection.ContainsKey(entry))
            {
                Console.WriteLine(entry);
                //dosomething                     
            }
        }
    }
}

O/P: 34

编辑2 :使用以下代码删除空格

mybuylist = mybuylist.ConvertAll(s => s.Trim());
相关问题