2017-02-20 20 views
1

私はプログラミングには慣れていますが、それを知りません。しかし、私は辞書リストから重複を印刷しようとしていますが、私に次のエラーが表示されます。辞書のリストから重複を印刷できません

My Error Output

List<Dictionary<string, string>> Locations = new List<Dictionary<string, string>>(); 
     var stringinput = new Dictionary<string, string>(); 
     string xString = x.ToString(); 
     string yString = y.ToString();    
     stringinput.Add(xString, yString); 

     Locations.Add(stringinput); 

     var duplicates = Locations 
     .GroupBy(i => i) 
     .Where(g => g.Count() > 1) 
     .Select(g => g.Key); 

     foreach (var d in duplicates) 
      Console.WriteLine(d); 

[マイ完全なコード] [2]

いずれかは、溶液またはそれらの重複を印刷するための回避策のいずれかのアイデアを持っていますか?

http://pastebin.com/EhhELrdg

+2

これは、2つの辞書オブジェクトが同じ内容であっても内容が同じでも比較しないためです。 – dasblinkenlight

+0

重複を検索する基準は? –

+0

ここにすべての関連コードを掲示してください、外部リンクは腐っています。このような理由から、質問は単独で行わなければなりません。 – weston

答えて

0

あなたはすべての辞書からキーと値のペアを平らにするSelectManyを使用することができます。

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

現在、辞書自体によってグループ化されています。 Dictionary<tkey,tval>Equals + GetHashCodeを上書きしないため、動作しません。また、重複した辞書を見つけたくなく、重複したキーも見つけたいと思っています。

+0

お返事ありがとうございます。奇妙な出力がなくなり、0になります。何がうまくいかないのでしょうか? xがyと同じ場合は上のコードが表示されますか? このコードの目的は、「訪問した」重複した場所を取得することです。たとえばx34、y24がリストx25、y34に追加され、x34、y24が2回目にリストに追加されたとき。 – CodeCommisaris

+0

@CodeCommisaris:現在のコードでは、重複はありません –

+0

あなたは正しいです、解決に感謝! – CodeCommisaris

関連する問題