C# 有条件地从列表中删除项
我有一个对象列表C# 有条件地从列表中删除项,c#,C#,我有一个对象列表list,每个对象(点)都有一些属性,如x、y和z。(Points.x,Points.y,Points.z是双精度) 我想删除具有某些条件的对象。例如,使用x的对象可以使用如下方法: list.RemoveAll(p => p.x <= 5 && p.y >= 6 && p.y < 10 && p.z < 20); list.RemoveAll(p=>p.x=6&&p.y
list
,每个对象(点)都有一些属性,如x、y和z。(Points.x
,Points.y
,Points.z
是双精度)
我想删除具有某些条件的对象。例如,使用x的对象可以使用如下方法:
list.RemoveAll(p => p.x <= 5 && p.y >= 6 && p.y < 10 && p.z < 20);
list.RemoveAll(p=>p.x=6&&p.y<10&&p.z<20);
您可以使用Linq
var pointList = new List<Point>();
pointList = pointList.Where( p =>
!((p.X <= 5) && (p.Y > 6 && p.Y < 10) && (p.Z < 20)))
.ToList();
var pointList=newlist();
点列表=点列表。其中(p=>
!((p.X 6和p.Y<10)和&(p.Z<20)))
.ToList();
或者对列表对象使用RemoveAll方法
pointList.RemoveAll(p => (p.X <= 5) && (p.Y > 6 && p.Y < 10) && (p.Z < 20));
pointList.RemoveAll(p=>(p.X 6和p.Y<10)和&(p.Z<20));
搜索LINQ To Objects
,如果你的代码没有按预期工作,请返回。points.RemoveAll(point=>point.X RemoveAll是一个与LinqThanks无关的方法。list points=new list();
。实际上我用这种方式定义了我的列表(ActivePoints是一个定义了点的类)每个点都有x、y和z。我能知道p=>
的含义吗?我应该按如下方式编写代码吗?OpenPoints.RemoveAll(p=>p.x=6&&p.y<10&&p.z<20)
p=>是Lambda表达式如果OpenPoints包含所有点对象,则RemoveAll将删除与指定谓词定义的条件匹配的所有对象。@KatatoniaShThank。这肯定会帮助我改进代码。还有一个问题。假设满足上述条件,则会出现一个字段满足此条件的对象的(Points.w
)值应为1(Points.w=1
),否则为0(Points.w=0
)。执行此操作的最佳方法是什么?