Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Метод Enumerable.Sum<TSource>(IEnumerable<TSource>, Func<TSource, Int64>)

 

Опубликовано: Октябрь 2016

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

Пространство имен:   System.Linq
Сборка:  System.Core (в System.Core.dll)

public static long Sum<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, long> selector
)

Параметры

source
Type: System.Collections.Generic.IEnumerable<TSource>

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

selector
Type: System.Func<TSource, Int64>

Функция преобразования, применяемая к каждому элементу.

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

Type: System.Int64

Сумма проецированных значений.

Параметры типа

TSource

Тип элементов source.

Exception Condition
ArgumentNullException

Параметр source или selector имеет значение null.

OverflowException

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

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

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

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

В следующем примере кода демонстрируется использование Sum<TSource>(IEnumerable<TSource>, Func<TSource, Double>) для суммирования проецированных значений последовательности.

System_CAPS_noteПримечание

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

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx1()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    double totalWeight = packages.Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
 This code produces the following output:

 The total weight of the packages is: 83.7
*/

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 3.5
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: