Sdílet prostřednictvím


Observable.Where<TSource> – metoda (IObservable<TSource>, Func<TSource, Boolean>)

Filtruje prvky pozorovatelné sekvence na základě predikátu.

Obor názvů:System.Reactive.Linq
Sestavení: System.Reactive (v System.Reactive.dll)

Syntax

'Declaration
<ExtensionAttribute> _
Public Shared Function Where(Of TSource) ( _
    source As IObservable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As IObservable(Of TSource)
'Usage
Dim source As IObservable(Of TSource)
Dim predicate As Func(Of TSource, Boolean)
Dim returnValue As IObservable(Of TSource)

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

Parametry typu

  • Tsource
    Zdroj typu.

Parametry

  • source
    Typ: System.IObservable<TSource>
    Pozorovatelná sekvence, jejíž prvky se mají filtrovat.

Návratová hodnota

Typ: System.IObservable<TSource>
Pozorovatelná sekvence, která obsahuje prvky ze vstupní sekvence, které splňují podmínku.

Poznámka k využití

V jazyce Visual Basic a C# můžete tuto metodu volat jako metodu instance u libovolného objektu typu IObservable<TSource>. Pokud k volání této metody použijete syntaxi metody instance, vynechejte první parametr. Další informace naleznete v tématech a .

Poznámky

Operátor Where umožňuje definovat predikátovou funkci pro testování každé položky v posloupnosti. Každá položka ze zdrojové sekvence, která způsobí, že funkce predikátu vrátí hodnotu false, se vyfiltruje z výsledné sekvence.

Příklady

Následující příklad používá operátor Where s dotazem LINQ (Language Integerated Query) k filtrování celé sekvence tak, aby pro sekvenci byla vytvořena pouze celá čísla.

using System;
using System.Reactive.Linq;

namespace Example
{
  class Program
  {
    static void Main()
    {
      //*********************************************************************************************//
      //*** The mainSequence produces a new long integer from the Interval operator every sec.    ***//
      //*********************************************************************************************//

      var mainSequence = Observable.Interval(TimeSpan.FromSeconds(1));


      //*********************************************************************************************//
      //*** This LINQ statement uses the Where operator to filter the integers in the sequence so ***//
      //*** that only the even integers are returned.                                             ***//
      //***                                                                                       ***//
      //*** you could also call the method explicitly. For example...                             ***//
      //***                                                                                       ***//
      //*** var seqWhereEven = mainSequence.Where(x => x % 2 == 0);                               ***//
      //***                                                                                       ***//
      //*********************************************************************************************//

      var seqWhereEven = from i in mainSequence
                         where i % 2 == 0 
                         select i;


      //*********************************************************************************************//
      //*** Create a subscription and write each of the even integers to the console window.      ***//
      //*********************************************************************************************//

      seqWhereEven.Subscribe(x => Console.WriteLine(x)); 
      Console.ReadLine();
    }
  }
}

Ukázkový kód vygeneroval následující výstup.

0
2
4
6
8
10
12
14
16

Viz také

Reference

Pozorovatelná třída

Kde přetížení

System.Reactive.Linq – obor názvů