Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为键返回错误值的字典_C#_.net_Dictionary - Fatal编程技术网

C# 为键返回错误值的字典

C# 为键返回错误值的字典,c#,.net,dictionary,C#,.net,Dictionary,我的字典似乎没有返回正确的值: foreach (string line in lines) { if (line.Contains("INSERT INTO ATTACHMENT VALUES")) { string AttachementID = line.Split('(', ',')[1]; string FileName = Attacheme

我的字典似乎没有返回正确的值:

        foreach (string line in lines)
        {
            if (line.Contains("INSERT INTO ATTACHMENT VALUES"))
            {
                string AttachementID = line.Split('(', ',')[1];
                string FileName = AttachementsDictionary[AttachementID];
                string BacklogScrumID = BacklogLookupDictionary[AttachementID];
                BacklogItem Story = BacklogItemDictionary[BacklogScrumID];
                Product Product = ProductDictionary[Story.ProductScrumId];
            }
        }
问题发生在:

BacklogItem Story = BacklogItemDictionary[BacklogScrumID];
下面是一个简单的类:

public class BacklogItem
{
    public string ProductScrumId { get; set; }
    public string StoryTitle { get; set; }
}
正在传递的值为:-324048562862518297

但是,它不是返回关联的BacklogItem对象,而是返回字典中的第一个对象:

钥匙-324048562862518297!=-922008489156936615那么为什么返回了错误的对象

编辑:字典的填充方式:

        foreach (string line in lines)
        {
            if (line.Contains("INSERT INTO ATTACHMENT"))
            {
                AttachementsDictionary.Add(line.Split('(', ',')[1], line.Split('\'', '\'')[1]);
            }
            if (line.Contains("INSERT INTO BACKLOGITEM_ATTACHMENT"))
            {
                if (!BacklogLookupDictionary.ContainsKey(line.Split('(', ',')[1]))
                {
                    BacklogLookupDictionary.Add(line.Split(',', ')')[1], line.Split('(', ',')[1]);
                }
            }
            if (line.Contains("INSERT INTO BACKLOGITEMEJB VALUES"))//-324048562862518297
            {
                CurrentBacklogItem.ProductScrumId = Regex.Split(line, ",(?=(?:[^']*'[^']*')*[^']*$)")[7];
                CurrentBacklogItem.StoryTitle = Regex.Split(line, ",(?=(?:[^']*'[^']*')*[^']*$)")[12];
                BacklogItemDictionary.Add(line.Split('(', ',')[1], CurrentBacklogItem);
            }
            if (line.Contains("INSERT INTO PRODUCTEJB VALUES"))
            {
                CurrentProduct.ProductName = line.Split('\'', '\'')[1].Replace(@"'", string.Empty);
                CurrentProduct.StoryPrefix = Regex.Split(line, ",(?=(?:[^']*'[^']*')*[^']*$)")[4].Replace(@"'", string.Empty);

                ProductDictionary.Add(line.Split('(', ',')[1], CurrentProduct);
            }
        }

这几乎肯定是一个输入错误的问题。要么有多行与
if
语句匹配(因为INSERT语句之间没有换行符),要么有多条INSERT语句将不同的字典键值与相同的ProductScrumId和StoryTitle关联。

字典是如何填充的?是,是否确定同一项不在字典中的两个位置?看起来相同的值映射到字典中的两个不同键。键“324048562862518297”的字典条目是什么?您的“Story”类可能有一个Equals()和GetHashcode()的错误实现methods@user469104:否,
BacklogItem
类(该故事是的一个实例)未用作字典中的键,因此这无关紧要。