Кількість елементів у кожному масиві списку <Array>

Як можна врахувати елементи, які дорівнюють 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 зі значеннями для кожного масиву. Мені подобається, де граф більше, ніж графа (селектор), але це питання смаку. Я сумніваюсь, що буде помітна різниця в продуктивності

до вас 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] .Виберіть (p => p.' Та ніякого підказки.Так .. Чи можу я використовувати його в режимі налагодження під час перегляду?
додано Автор deadfish, джерело
Не підтримую, eh :( Добре, дякую: P Я, хоча це, якщо я напишу в налагодженні, буде працювати також і в non: X
додано Автор 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, джерело
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug