3

与えられた2つの配列:

double[] a = new double[]{1.0, 2.0, 3.0};
bool[] b = new bool[]{true, false, true};

aに基づいて選択する簡単な方法はありますbか?Rおよびその他のスクリプト言語では、次のように言います。

a[b]

取得します{1.0, 3.0}。C#でこれを行うためのクリーンな(明示的なループが含まれていない)方法があるかどうかはわかりません。たぶん、データを別の方法で整理する必要がありますか?

4

3 に答える 3

6

LINQZipメソッドを使用します。例:

a.Zip(b, (i, j) => new {i, j}).Where(x => x.j).Select(x => x.i)
于 2012-05-17T10:11:52.180 に答える
5

これは、LINQを使用して実現できます。

double[] a = new double[]{1.0, 2.0, 3.0}; 
bool[] b = new bool[]{true, false, true}; 
var result = a.Where((item, index)=>b[index]);
于 2012-05-17T10:13:27.437 に答える
4

このより伝統的なLINQアプローチもあります:

b.Select((f, i) => f ? i : - 1).Where(i => i != -1).Select(i => a[i]);
于 2012-05-17T10:13:46.443 に答える