2012-04-17 44 views
1

我有浮動點列表如下:從列表<poinf>與拉姆達刪除同一重複點表達式

wayPoints = (new PointF[] { 
new PointF(18, 0), 
new PointF(18,0), 
new PointF(55, 155), 
new PointF(55, 155), 
new PointF(55, 155), 
new PointF(55, 155), 
new PointF(55, 0), 
new PointF(55, 230)}).ToList(); 

我想用Lambda表達式中,從列表中刪除相同點,但這些相同點之一停留在列表

輸出:

wayPoints = 
(new PointF[] { 
new PointF(18, 0), 
new PointF(55, 155), 
new PointF(55, 0), 
new PointF(55, 230)} 
).ToList(); 

我應該怎麼寫我在Lambda表達式的命令?

回答

1

如果正是點的列表,那麼你可以做到這一點(無需首先做一個陣列和ToList()):如果你想獨特的點

var wayPoints = new List<PointF>{ 
    new PointF(18, 0), 
    new PointF(18,0), 
    new PointF(55, 155), 
    new PointF(55, 155), 
    new PointF(55, 155), 
    new PointF(55, 155), 
    new PointF(55, 0), 
    new PointF(55, 230) 
}; 

。您可以使用Distinct。像這樣:

var wayPoints = (new PointF[] { 
new PointF(18, 0), 
new PointF(18,0), 
new PointF(55, 155), 
new PointF(55, 155), 
new PointF(55, 155), 
new PointF(55, 155), 
new PointF(55, 0), 
new PointF(55, 230)}).ToList(); 
var uniquePoints=wayPoints.Distinct().ToList(); 
2

Distinct刪除重複:

var distinctPoints = wayPoints.Distinct(); 

然而,其結果將僅包含一個的PointF(18,0),即使是在像序列{(18,0),(10 ,10),(18,0)}。我不確定你是否想保留那些不連續的點。

+0

如果輸入列表類似於{(18,0),(10,10),(18,0)} so 我希望結果顯示爲{(18,0),(10,10 )} – 2012-04-17 08:22:56

+0

@farzin parsa:Then'Distinct'是選擇的方法。 – Stephan 2012-04-17 08:37:59