可以說我有一個自定義「Point」類的列表(我知道System.Drawing中有一個類,但可以說我需要一個自定義的類)。現在,這個名單有時可有相同點,因此,例如,說,這是建立這樣的:在列表中查找不同點(使用2個謂詞)
List<customPoint> myPoints = new List<customPoint>();
myPoints.Add(new customPoint(1,5));
myPoints.Add(new customPoint(1,5));
myPoints.Add(new customPoint(2,3));
myPoints.Add(new customPoint(4,9));
myPoints.Add(new customPoint(8,7));
myPoints.Add(new customPoint(2,3));
後來我需要做一些計算,但我不需要重複。這將是一個更優雅的方式做出的獨特點的新列表比這
List<customPoint> uniquePoints = new List<customPoint>();
for(int i; i < myPoints.Count; i++)
{
Boolean foundDuplicate = false;
int tempX = myPoints[i].X;
int tempY = myPoints[i].Y;
for(int j=0; j < uniquePoints.Count; j++)
{
if((tempX == uniquePoints[0].X) && (tempY == uniquePoints[0].Y))
{
foundDuplicate = true;
break;
}
}
if(!foundDuplicate)
{
uniquePoints.Add(myPoints[i]);
}
}
我知道這是凌亂的,但,這就是爲什麼我問,如果有一個更優雅的方式。我查看了Linq的「Distinct」命令,但它看起來不起作用,我猜他們的對象實例化中有一些東西仍然是唯一的。
您的'customPo int類(它應該是遵循命名約定的'CustomPoint')適當地覆蓋'Equals'和'GetHashCode'? – 2013-04-26 18:57:55
這裏有一個鏈接[Distinct](http:// stackoverflow。com/questions/998066/linq-distinct-values)與前面的討論一起,連同指向msdn doc的鏈接截然不同 – user1376713 2013-04-26 18:57:16