제목에서 말한 것처럼 : 다른 배열의 요소가 참인 위치의 배열에서 요소를 선택해야합니다.다른 배열의 요소가 참인 배열의 요소를 선택하십시오.
output = array1(array2);
여기서 array2는 bool의 배열입니다. 나는 순간 :
제목에서 말한 것처럼 : 다른 배열의 요소가 참인 위치의 배열에서 요소를 선택해야합니다.다른 배열의 요소가 참인 배열의 요소를 선택하십시오.
output = array1(array2);
여기서 array2는 bool의 배열입니다. 나는 순간 :
에서 Linq에에 잃었어요
이 시도 :
var bools = new[] { true, false };
var elements = new[] { 1, 2 };
var result = elements
.Take(bools.Length)
.Where((e, index) => bools[index]).ToList();
Take
방법은 요소 검색이 bools
배열의 인덱스 범위에서 이루어집니다 보장합니다.
, 사용자 정의 확장 방법을 쓸 수있다 - 예를 들면 :
var enabled = array1.WhereEnabled(array2);
아마도 벡터 전문화와 :
public static IEnumerable<T> WhereEnabled<T>(
this T[] source,
bool[] flags)
{
int max = Math.Min(source.Length, flags.Length);
for (int i = 0; i < max; i++)
{
if (flags[i]) yield return source[i];
}
}
바로 다음
public static IEnumerable<T> WhereEnabled<T>(
this IEnumerable<T> source,
IEnumerable<bool> flags)
{
using(var sourceIter = source.GetEnumerator())
using(var flagIter = flags.GetEnumerator())
{
while(sourceIter.MoveNext() && flagIter.MoveNext())
{
if (flagIter.Current) yield return sourceIter.Current;
}
}
}
예를 들어, array1이'{ "a", "b", "c"}'이고 array2는'{false, true, true} '이고 결과는'{ "b", "c"}'가 될 것입니까? – BoltClock