Поделиться через


Observable.MaxBy<TSource, TKey> Method (IObservable<TSource>, Func<TSource, TKey>)

Возвращает элементы в наблюдаемой последовательности с максимальным значением ключа.

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

Синтаксис

'Declaration
<ExtensionAttribute> _
Public Shared Function MaxBy(Of TSource, TKey) ( _
    source As IObservable(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As IObservable(Of IList(Of TSource))
'Usage
Dim source As IObservable(Of TSource)
Dim keySelector As Func(Of TSource, TKey)
Dim returnValue As IObservable(Of IList(Of TSource))

returnValue = source.MaxBy(keySelector)
public static IObservable<IList<TSource>> MaxBy<TSource, TKey>(
    this IObservable<TSource> source,
    Func<TSource, TKey> keySelector
)
[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IObservable<IList<TSource>^>^ MaxBy(
    IObservable<TSource>^ source, 
    Func<TSource, TKey>^ keySelector
)
static member MaxBy : 
        source:IObservable<'TSource> * 
        keySelector:Func<'TSource, 'TKey> -> IObservable<IList<'TSource>> 
JScript does not support generic types and methods.

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

  • TSource
    Тип источника.
  • Tkey
    Тип ключа.

Параметры

  • source
    Тип: System.IObservable<TSource>
    Наблюдаемая последовательность для получения максимального количества элементов.
  • keySelector
    Тип: System.Func<TSource, TKey>
    Функция селектора ключей.

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

Тип: System.IObservable<IList<TSource>>
Элементы в наблюдаемой последовательности с максимальным значением ключа.

Примечание об использовании

В Visual Basic и C# этот метод можно вызвать как метод экземпляра для любого объекта типа IObservable<TSource>. При вызове метода для экземпляра следует опускать первый параметр. Дополнительные сведения см. в разделе или .

Комментарии

Оператор MaxBy используется для получения элементов в последовательности, создающих максимальное значение ключа. Например, если последовательность была последовательностью всех процессов, выполняющихся на компьютере, оператор MaxBy можно использовать для возврата процессов, которые выделили большую часть физической памяти. Это демонстрируется в примере кода в этом разделе.

Примеры

В следующем примере кода создается наблюдаемая последовательность всех запущенных процессов на локальном компьютере. Затем оператор MaxBy используется для возврата наблюдаемой последовательности, содержащей список процессов, для которых выделено больше физической памяти. Сведения о процессе для процессов в списке записываются в окно консоли.

using System;
using System.Reactive.Linq;
using System.Diagnostics;

namespace Example
{
  class Program
  {
    static void Main()
    {
      //*********************************************************************************************//
      //*** Generate a sequence of processes running on the local machine.                        ***//
      //*********************************************************************************************//

      var seqProcesses = System.Diagnostics.Process.GetProcesses().ToObservable();


      //*********************************************************************************************//
      //*** Use the MaxBy operator to get a list of the processes that have the highest amount    ***//
      //*** of physical memory allocated.                                                         ***//
      //*********************************************************************************************//

      var maxWorkingSet = seqProcesses.MaxBy(p => p.WorkingSet64);


      //*********************************************************************************************//
      //*** Write the process information to the console window for the processes which have      ***//
      //*** allocated the most physical memory                                                    ***//
      //*********************************************************************************************//

      maxWorkingSet.Subscribe(maxList => 
      {
        foreach (Process process in maxList)
        {
          Console.WriteLine("\nDescription   : {0}\n" + 
                            "Filename      : {1}\n" + 
                            "Working Set   : {2}", 
                            process.MainModule.FileVersionInfo.FileDescription, 
                            process.MainModule.FileName, 
                            process.WorkingSet64);
        }
      });

      Console.WriteLine("\nPress ENTER to exit...\n");
      Console.ReadLine();
    }
  }
}

Приведенные ниже выходные данные были созданы в примере кода.

Description   : Desktop Window Manager
Filename      : C:\Windows\system32\Dwm.exe
Working Set   : 363646976

Press ENTER to exit...

См. также:

Ссылка

Наблюдаемый класс

Перегрузка MaxBy

Пространство имен System.Reactive.Linq