C# 无法打印字典列表中的副本

C# 无法打印字典列表中的副本,c#,list,dictionary,duplicates,C#,List,Dictionary,Duplicates,我对编程还不熟悉,但已经掌握了窍门。但我一直在试图打印字典列表中的副本,这给了我以下错误 列表位置=新列表(); var stringinput=newdictionary(); 字符串xString=x.ToString(); 字符串yString=y.ToString(); 添加(xString,yString); 位置。添加(字符串输入); 重复变量=位置 .GroupBy(i=>i) .Where(g=>g.Count()>1) .选择(g=>g.Key); foreach(变量d重复

我对编程还不熟悉,但已经掌握了窍门。但我一直在试图打印字典列表中的副本,这给了我以下错误

列表位置=新列表();
var stringinput=newdictionary();
字符串xString=x.ToString();
字符串yString=y.ToString();
添加(xString,yString);
位置。添加(字符串输入);
重复变量=位置
.GroupBy(i=>i)
.Where(g=>g.Count()>1)
.选择(g=>g.Key);
foreach(变量d重复)
控制台写入线(d);
[我的完整密码][2]

是否有人有任何想法的解决方案或工作周围打印这些副本


您可以使用
SelectMany
展平所有词典中的键值对:

duplicates = locations.SelectMany(dict => dict)
                      .GroupBy(kv => kv.Key)
                      .Where(g => g.Count() > 1)
                      .Select(g => g.Key);

您当前正在按字典本身进行分组。这不起作用,因为
Dictionary
不会覆盖
Equals
+
GetHashCode
。您也不希望找到重复的字典,而是希望找到重复的键。

您可以使用
选择many
来展平所有字典中的键值对:

duplicates = locations.SelectMany(dict => dict)
                      .GroupBy(kv => kv.Key)
                      .Where(g => g.Count() > 1)
                      .Select(g => g.Key);

您当前正在按字典本身进行分组。这不起作用,因为
Dictionary
不会覆盖
Equals
+
GetHashCode
。您也不希望查找重复的字典,而是希望查找重复的键。

这是因为即使两个字典对象的内容彼此相同,它们也不会进行相等的比较。您希望根据什么条件查找重复项?请在此处发布所有相关代码,外部链接。由于这个原因,问题必须独立。为什么要在字典中存储位置?字典用于包含键和值的数据,您可以使用键查找值。我将定义一个坐标类并列出这些坐标类,或者使用一个元组。我认为编译器不理解字典中“重复”的概念。真的吗?需要登录才能查看您的代码?这是因为即使两个字典对象的内容相同,它们也不会进行相等的比较。要查找重复的标准是什么?请在此处发布所有相关代码,外部链接。因此,问题必须是独立的。为什么要在字典中存储位置?字典用于包含键和值的数据,您可以使用键查找值。我将定义一个坐标类并列出这些坐标类,或者使用一个元组。我认为编译器不理解字典中“重复”的概念。真的吗?需要登录才能查看您的代码?谢谢您的回答。奇怪的输出消失,变成0。出了什么问题?或者当x和y相同时,上面的代码是否打印?此代码的目的是获取已“访问”的重复位置。例如,x34,y24已添加到列表中,x25,y34,当x34,y24第二次添加到列表中时。@CodeCommisaris:嗯,在您当前的代码中没有重复项。谢谢您的回答。奇怪的输出消失,变成0。出了什么问题?或者当x和y相同时,上面的代码是否打印?此代码的目的是获取已“访问”的重复位置。例如,x34,y24已添加到列表中,x25,y34,当x34,y24第二次添加到列表中时。@CodeCommisaris:嗯,在您当前的代码中没有重复的代码