很多谓词都在哪里

时间:2013-10-12 13:26:19

标签: c# arrays matlab where predicate

我想在C#中实现以下用Matlab编写的代码:

 mask=find(array1>1 | array2>2 | array3>3 );
array1(mask)=[];

表示“查找array1中所有> 1的元素或者array2中的所有元素> 2 或者array3> 3中的所有元素,并将它们从array1“

中取出

如果我只想实现第一个条件(array1> 1),我想我可以这样做:

array1=array1.Where( val => val < 1).ToArray();

有什么方法可以满足所有这3个条件吗?

1 个答案:

答案 0 :(得分:3)

您可以分别在三个数组中找到匹配的元素,然后连接结果序列:

var mask = array1.Where(i => i > 1)
   .Concat(array2.Where(i => i > 2))
   .Concat(array3.Where(i => i > 3));

var result = array1.Except(mask).ToArray();