質問: new List() { "a", "b" }; parentList.Add(list1); parentList.Add(list2); parentList.Add(list3); // 内容が重複しているので、Addされないようにしたい ``` ### 試したこと list1 と list3は内容が同じなので、 list1.SequenceEqual(list3); と実行すると、trueが戻り、内容の判定ができることはわかりました。 しかし、Addする際に毎回すべての子List要素をForループでSequenceEqualにて判定すると処理速度が低下してしまうため、他に良い方法がないか検討しております。 もし、良い方法がございましたらご教示いただければ幸いです。
回答: ``` class ListEqualityComparer : IEqualityComparer> { public bool Equals(List list1, List list2) { return list1.SequenceEqual(list2); } public int GetHashCode(List list1) { return list1.ToArray().GetHashCode(); } } ``` ``` parentList = parentList.Distinct(new ListEqualityComparer()).ToList(); ``` 要素数が2と決まっているのならば、 ``` parentList = parentList.GroupBy(a => new { First = a.First(), Last = a.Last() }).Select(g => g.First()).ToList(); ```