Что такое sum в c
Перейти к содержимому

Что такое sum в c

Операции Count, LongCount и Sum

XYZ School

Операция Count возвращает количество элементов во входной последовательности. Эта операция имеет два прототипа, описанные ниже:

Первый прототип Count

Этот прототип операции Count возвращает общее количество элементов во входной последовательности, проверяя сначала, реализует ли она интерфейс ICollection<T>, и если да, то получает счетчик последовательности через реализацию этого интерфейса. Если же входная последовательность source не реализует интерфейс ICollection<T>, операция Count перечисляет всю эту последовательность, подсчитывая количество элементов.

Второй прототип Count

Второй прототип операции Count перечисляет входную последовательность source и подсчитывает все элементы, которые заставляют делегат метода predicate вернуть true:

Если любой из аргументов равен null, генерируется исключение ArgumentNullException. Если значение count превышает Int32.MaxValue, генерируется исключение OverflowException.

Код ниже начинается с использования первого прототипа. Сколько элементов содержится в последовательности cars? Затем используется второй прототип, подсчитывая количество машин, начинающихся с «A»:

Результат работы этого кода:

Использование операции Count

LongCount

Операция LongCount возвращает количество элементов входной последовательности как значение типа long. Эта операция имеет два прототипа, полностью идентичных прототипам операции Count, за тем лишь исключением, что они возвращают число элементов, имеющих тип long, а не int.

Давайте рассмотрим пример использования операции LongCount. Можно было бы просто повторить тот же пример, который сопровождал описание операции Count, изменив соответствующие места на тип long, но это не слишком наглядно. Поскольку нереально описать достаточно длинную статическую последовательность, для которой понадобилась бы операция LongCount, она генерируется с помощью стандартной операции запроса:

Как видите, были сгенерированы две последовательности с использованием операции Range и соединены вместе с помощью операции Concat.

Перед запуском примера наберитесь терпения — он выполняется долго, возможно, даже несколько минут. Например, на машине с четырехядерным процессором и 4 Гбайт памяти для этого потребовалось около минуты. В конце концов, будут сгенерированы две последовательности, каждая по 2 147 483 647 элементов. Ниже показан результат:

Использование операции LongCount

Операция Sum возвращает сумму числовых значений, содержащихся в элементах последовательности. Эта операция имеет два прототипа, описанные ниже:

Первый прототип Sum

Тип Numeric должен быть одним из int, long, double или decimal, либо одним из их допускающих null эквивалентов: int?, long?, double? или decimal?.

Первый прототип операции Sum возвращает сумму всех элементов входной последовательности source. Пустая последовательность приведет к возврату нуля. Операция Sum не включает значения null в результат для числовых типов, допускающих null.

Второй прототип Sum

Второй прототип Sum ведет себя так же, как и первый, но суммирует только те значения входной последовательности, которые выбраны делегатом метода selector.

Если любой из аргументов равен null, генерируется исключение ArgumentNullException. Если сумма оказывается слишком большой, чтобы уместиться в тип Numeric, и если тип Numeric отличается от decimal или decimal?, генерируется исключение OverflowException. Если же типом Numeric является decimal или decimal?, возвращается положительная или отрицательная бесконечность.

Ниже показан пример использования первого прототипа операции Sum:

Вызов первого прототипа операции Sum

Теперь попробуем второй прототип, как показано ниже. В этом примере задействован общий класс EmployeeOptionEntry, и будут суммироваться опционы для всех сотрудников:

Вместо того чтобы пытаться суммировать весь элемент, что не имело бы смысла в данном примере, поскольку речь идет об объекте сотрудника, можно использовать элемент selector второго прототипа, чтобы извлечь только интересующие члены — в данном случае optionsCount. Результат выполнения этого кода показан ниже:

Что такое sum в c

К агрегатным операциям относят различные операции над выборкой, например, получение числа элементов, получение минимального, максимального и среднего значения в выборке, а также суммирование значений.

Метод Aggregate

Метод Aggregate выполняет общую агрегацию элементов коллекции в зависимости от указанного выражения. Например:

Переменная query будет представлять результат агрегации массива. В качестве условия агрегации используется выражение (x,y)=> x — y , то есть вначале из первого элемента вычитается второй, потом из получившегося значения вычитается третий и так далее. То есть будет эквивалентно выражению:

В итоге мы получим число -13. Соответственно мы бы могли использовать любые другие операции, например, сложение:

Еще одна версия метода позволяет задать начальное значение, с которого начинается цепь агрегатных операций:

В данном случае объединяются все элементы массива words, но первым элемент агрегатной операции будет строка «Text:».

Получение размера выборки. Метод Count

Для получения числа элементов в выборке используется метод Count() :

Метод Count() в одной из версий также может принимать лямбда-выражение, которое устанавливает условие выборки. Поэтому мы можем в данном случае не использовать выражение Where :

Получение суммы

Для получения суммы значений применяется метод Sum :

Метод Sum() имеет ряд перегрузок. В частности, если у нас набор сложных объектов, как в примере выше, то мы можем указать свойство, значения которого будут суммироваться:

В данном случае вычисляется сумма значений свойств Age объектов Person из массива people.

Максимальное, минимальное и среднее значения

Для нахождения минимального значения применяется метод Min() , для получения максимального — метод Max() , а для нахождения среднего значения — метод Average() . Их действие похоже на методы Sum и Count:

Если мы работаем со сложными объектами, то в эти методы передается делегат, который принимает свойство, применяемое в вычислениях:

В данном случае для вычислений применяется свойство Age, то есть вычисляется минимальный, максимальный и средний возраст.

Enumerable. Sum Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Вычисляет сумму последовательности числовых значений.

Перегрузки

Вычисляет сумму последовательности значений типа Decimal.

Вычисляет сумму последовательности значений типа Double.

Вычисляет сумму последовательности значений типа Int32.

Вычисляет сумму последовательности значений типа Int64.

Вычисляет сумму последовательности значений Decimal обнуляемого типа.

Вычисляет сумму последовательности значений Double обнуляемого типа.

Вычисляет сумму последовательности значений Int32 обнуляемого типа.

Вычисляет сумму последовательности значений Int64 обнуляемого типа.

Вычисляет сумму последовательности значений Single обнуляемого типа.

Вычисляет сумму последовательности значений типа Single.

Вычисляет сумму последовательности значений типа Single, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений Single обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений Int64 обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений Int32 обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений Double обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений типа Double, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений типа Int64, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений типа Int32, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений типа Decimal, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Вычисляет сумму последовательности значений Decimal обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.

Sum(IEnumerable<Decimal>)

Вычисляет сумму последовательности значений типа Decimal.

Параметры

Последовательность значений Decimal, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Сумма больше, чем MaxValue.

Комментарии

Метод Sum(IEnumerable<Decimal>) возвращает ноль, если source не содержит элементов.

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

См. также раздел

Применяется к

Sum(IEnumerable<Double>)

Вычисляет сумму последовательности значений типа Double.

Параметры

Последовательность значений Double, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Комментарии

Этот метод возвращает ноль, если source не содержит элементов.

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

См. также раздел

Применяется к

Sum(IEnumerable<Int32>)

Вычисляет сумму последовательности значений типа Int32.

Параметры

Последовательность значений Int32, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Сумма больше, чем MaxValue.

Комментарии

Этот метод возвращает ноль, если source не содержит элементов.

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

См. также раздел

Применяется к

Sum(IEnumerable<Int64>)

Вычисляет сумму последовательности значений типа Int64.

Параметры

Последовательность значений Int64, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Сумма больше, чем MaxValue.

Комментарии

Этот метод возвращает ноль, если source не содержит элементов.

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

См. также раздел

Применяется к

Sum(IEnumerable<Nullable<Decimal>>)

Вычисляет сумму последовательности значений Decimal обнуляемого типа.

Параметры

Последовательность значений Decimal обнуляемого типа, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Сумма больше, чем MaxValue.

Комментарии

Этот метод возвращает ноль, если source не содержит элементов.

Результат не содержит значений. null

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

См. также раздел

Применяется к

Sum(IEnumerable<Nullable<Double>>)

Вычисляет сумму последовательности значений Double обнуляемого типа.

Параметры

Последовательность значений Double обнуляемого типа, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Комментарии

Этот метод возвращает ноль, если source не содержит элементов.

Результат не содержит значений. null

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

См. также раздел

Применяется к

Sum(IEnumerable<Nullable<Int32>>)

Вычисляет сумму последовательности значений Int32 обнуляемого типа.

Параметры

Последовательность значений Int32 обнуляемого типа, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Сумма больше, чем MaxValue.

Комментарии

Этот метод возвращает ноль, если source не содержит элементов.

Результат не содержит значений. null

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

См. также раздел

Применяется к

Sum(IEnumerable<Nullable<Int64>>)

Вычисляет сумму последовательности значений Int64 обнуляемого типа.

Параметры

Последовательность значений Int64 обнуляемого типа, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Сумма больше, чем MaxValue.

Комментарии

Этот метод возвращает ноль, если source не содержит элементов.

Результат не содержит значений. null

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

См. также раздел

Применяется к

Sum(IEnumerable<Nullable<Single>>)

Вычисляет сумму последовательности значений Single обнуляемого типа.

Параметры

Последовательность значений Single обнуляемого типа, сумму которых требуется вычислить.

Возвращаемое значение

Сумма последовательности значений.

Исключения

source имеет значение null .

Примеры

В следующем примере кода показано, как использовать для Sum(IEnumerable<Nullable<Single>>) суммирования значений последовательности.

Комментарии

Этот метод возвращает ноль, если source не содержит элементов.

Результат не содержит значений. null

В Visual Basic синтаксисе Aggregate Into Sum() выражений запроса предложение преобразуется в вызов Sum.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *