Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有条件地从列表中删除项_C# - Fatal编程技术网

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
)。执行此操作的最佳方法是什么?