다음을 통해 공유


Observable.Where<TSource> 메서드(IObservable<TSource>, Func<TSource, Boolean>)

조건자를 기반으로 관찰 가능한 시퀀스의 요소를 필터링합니다.

네임스페이스:System.Reactive.Linq
어셈블리: System.Reactive(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.

형식 매개 변수

  • TSource
    형식 원본입니다.

매개 변수

  • source
    형식: System.IObservable<TSource>
    필터링할 요소가 있는 관찰 가능한 시퀀스입니다.
  • predicate
    형식: System.Func<TSource, Boolean>
    조건에 대한 각 원본 요소를 테스트하는 함수입니다.

반환 값

형식: System.IObservable<TSource>
조건을 충족하는 입력 시퀀스의 요소를 포함하는 관찰 가능한 시퀀스입니다.

사용 정보

Visual Basic 및 C#에서는 IObservable TSource> 형식의 모든 개체에서 이 메서드를 instance 메서드로 호출할 수 있습니다<. 인스턴스 메서드 구문을 사용하여 이 메서드를 호출할 경우에는 첫 번째 매개 변수를 생략합니다. 자세한 내용은 또는 를 참조하세요.

설명

Where 연산자를 사용하면 시퀀스에서 각 항목을 테스트하는 조건자 함수를 정의할 수 있습니다. 조건자 함수가 false를 반환하도록 하는 소스 시퀀스의 각 항목은 결과 시퀀스에서 필터링됩니다.

예제

다음 예제에서는 LINQ(Language Integerated Query)가 있는 Where 연산자를 사용하여 정수 시퀀스를 필터링하여 시퀀스에 대한 정수만 생성되도록 합니다.

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();
    }
  }
}

다음 출력은 예제 코드에 의해 생성되었습니다.

0
2
4
6
8
10
12
14
16

참고 항목

참조

관찰 가능한 클래스

여기서 오버로드

System.Reactive.Linq 네임스페이스