2013-10-12 14 views
1

Я хочу implemement следующий код, написанный в Matlab, в C#:Многие предикаты в котором условие

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

, что означает «найти все элементы в array1,> 1 ИЛИ все элементы в массив2> 2 ИЛИ все элементы в array3> 3, и вывести их из array1"

Если я хотел бы реализовать только первое условие (массив1> 1), я предполагаю, что я мог бы сделать это следующим образом:

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

Есть ли способ выполнить все три условия?

ответ

3

Вы можете найти элементы, совпадающие в трех массивах отдельно, а затем CONCAT в результате последовательности:

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(); 
+0

Спасибо! Не знал о конкат ... – Cobe

Смежные вопросы