リスト<配列>の各配列の要素を数えます。

リストの各配列で 0 と等しい要素を数えるにはどうすればよいですか?

I have a list List piks. I would like to count in each byte[] how many elements are with equal to 0.

私はいくつかの方法を試しました:

from c in piksle_lista_tablic[84] 
where (c.Equals(0)) 
select c

または

piksle_lista_tablic[84].Count(n => n == 0)

and I always get the errまたはExpression cannot contain lambda expressions.

Fまたはexample: piks[1] is an array containing 1156 items, and I would like to know how many specific elements are in that array.


PS:私は時計ウィンドウでLinqを使用できますか?

2

4 答え

var results = from arr in piks
              select arr.Where(b=>b==0).Count()

そのコードは配列のリストを反復し、配列ごとにゼロと等しい要素を見つけ、各配列のカウントとともにIEnumerableを返します。私はCount(セレクター)よりも数が多いのが好きですが、好みの問題です。パフォーマンスに大きな違いが生じるのではないかと疑う

あなたにps 1はいあなたはデバッグ中にlinqを使うことができますが、linq文はデバッグ中に時には助けになることがあるが、デバッガのためにコードを書くのは嫌いです。

EDIT As per your comment: No you cannot use Lambda in the watch window. You can use Linq in the watch window but only as method calls and only with named functions

6
追加された
このコードは、デバッグでは動作しません。私は試してみました..しかし、おかげで、問題は私の方法論にありました:)
追加された 著者 deadfish,
ウォッチウィンドウではい
追加された 著者 deadfish,
@ Cooldown4secondsデバッグで動作しますか?ウォッチウィンドウ/イミディエイトウィンドウについて話していますか?それが正しいなら、ラムダ式をそこで使うことはできません
追加された 著者 Rune FS,

これを試して:

var zero_counts = piks.Select(p => p.Count(c => c == 0));

ps1。デバッグ中にlinqを使ってみることはできますか?

Visual Studioでは、ウォッチウィンドウのラムダ式はサポートされていません。

4
追加された
はい、さて、デバッグはどうですか?そのコードを書くことはできますか?それを貼り付ける間に ... p => p intelisenseは何の示唆も与えません。私はそのようなものを貼り付けます: 'piksle_lista_tablic [84] .Select(p => p。')とsuggesionはありません。
追加された 著者 deadfish,
サポートしていない、えええええええええと
追加された 著者 deadfish,
@ Cooldown4seconds:クイックウォッチウィンドウはLinqを吸うので、非常に限られた状況を除いてLinqクエリの作成に役立てることはできません。わかりませんが、直接のウィンドウに同じ問題があるかもしれませんが、試してみることもできます。また、代わりに LinqPad を試すこともできますが、キャッシュを外さない限り、Intellisenseは提供されません。
追加された 著者 Merlyn Morgan-Graham,
私の毎回のでは、私は別の答えを見ています:)
追加された 著者 L.B,
List piks;
// Fill piks...
int zeroValuesCount = 0;
foreach (var pik in piks) {
    zeroValuesCount += pik.Count(x => x == 0);
}
1
追加された

全体の合計を数えたい場合は、これを行うことができます:

piks.SelectMany(p => p).Count(p => p == 0);

各配列に対して、これを行うことができます:

piks.Select(p => p.Count(p => p == 0));
1
追加された
グローバルは問題ではない、私はそれぞれの配列のために欲しかった:)また、ありがとう
追加された 著者 deadfish,