2012-04-17 64 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