共用方式為


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

傳回具有最大索引鍵值的可觀察序列中的專案。

Namespace:System.Reactive.Linq
裝配: System.Reactive.dll) 中的 System.Reactive (

Syntax

'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...

另請參閱

參考

Observable 類別

MaxBy 多載

System.Reactive.Linq 命名空間