Проверка на наличие элементов

Всем привет.

Хочу проверить пришедший объект на "есть ли что-то внутри" , Empty как я понимаю. Могу ли я использовать эту форму (.Any())?

if (summaryViewResultSection.ReceivableAccountBalance.Items.Any() &&
                summaryViewResultSection.PayableAccountBalance.Items.Any())
            {
                var receivableBalanceTable = GetReceivableBalanceTable(summaryViewResultSection, worksheet, currency, currentRow, currentColumn);

                var payableBalanceTable = GetPayableBalanceTable(summaryViewResultSection, worksheet, currency, receivableBalanceTable.CurrentRow + 3, currentColumn);

                GetNetTotal(receivableBalanceTable, payableBalanceTable, worksheet, currency, currentColumn);
            }
            else
            {
                if (summaryViewResultSection.PayableAccountBalance.Items.Any())
                {
                    GetPayableBalanceTable(summaryViewResultSection, worksheet, currency, currentRow, currentColumn);
                }
                else
                {
                    GetReceivableBalanceTable(summaryViewResultSection, worksheet, currency, currentRow, currentColumn);
                }
            }

Прикрепляю объект который может приходить в Json

"payableAccountBalance": {
                "items": [],
                "total": 0.0
            },

Ответы (1 шт):

Автор решения: VladD

Если коллекция имеет тип IEnumerable<T> или более конкретный тип, реализующий этот интерфейс (например, IReadOnlyCollection<T> или там List<T>), то проверять на наличие элементов вполне можно через .Any().


Функция Any проверяет, не поддерживает ли объект интерфейс, с помощью которого можно проверить количество элементов без потенциально медленного перечисления, и пользуется им.

Если вы хотите пожертвовать читабельностью ради минимального выигрыша в эффективности (например, ваш код — часть цикла, который должен быть очень быстрым), и вам известен точный тип коллекции, и эта коллекция поддерживает свойство Count (не LINQ-функцию Count()!), то можно заменить проверку на collection.Count != 0. Замена свойства Count на функцию Count() скорее всего сделает ваш код лишь медленнее.

→ Ссылка