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.
- Predikátu
Typ: System.Func<TSource, logická hodnota>
Funkce pro testování jednotlivých zdrojových prvků pro podmínku.
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