我想解碼一個對象數組,使用兩列,其中第二列是一個字典。來形容這個最好的辦法是表現出一些代碼:LINQ並從一個對象數組中刪除重複項
class MyClass
{
public int ID;
public Dictionary<int, int> Dict = new Dictionary<int, int>();
}
現在創建一些對象:
List<MyClass> list = new List<MyClass>();
MyClass mc1 = new MyClass();
list.Add(mc1); mc1.ID = 1; mc1.Dict.Add(1, 1);
MyClass mc2 = new MyClass();
list.Add(mc2); mc2.ID = 1; mc2.Dict.Add(1, 1);
MyClass mc3 = new MyClass();
list.Add(mc3); mc3.ID = 1; mc3.Dict.Add(1, 2);
MyClass mc4 = new MyClass();
list.Add(mc4); mc4.ID = 2; mc4.Dict.Add(1, 1);
我正在尋找實現由ID和快譯通是不同的。結果應該是這樣的:
MyClass的對象(不漂亮)的名單
1 //MyClass.ID
1,1 //MyClass.Dictionary
1
1,2
2
1,1
注意的對象之一,從原來的列表中刪除,因爲它有一個重複的ID和字典(字典中的值) 。我一直玩的替代版本:
var s = from p in list
group p by p.ID into group1
from group2 in
(from p in group1 group p by p.Dict)
group group2 by group1.Key;
但只是沒有任何運氣。感謝任何人在解決這個問題上的洞察力。
PS - 我沒有改變規則,但我相信一個GROUP BY和一個SELECTFIRST將比一個DISTINCT更乾淨,併爲其Comparer提供額外的代碼。任何人都可以使用GROUP BY來解決這個問題。