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


Метод Join(TOuter, TInner, TKey, TResult)

Соединяет события внешнего потока с событиями внутреннего потока по заданному ключу соединения.

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

Синтаксис

public static CepStream<TResult> Join<TOuter, TInner, TKey, TResult>(
    this CepStream<TOuter> outer,
    CepStream<TInner> inner,
    Expression<Func<TOuter, TKey>> outerKeySelector,
    Expression<Func<TInner, TKey>> innerKeySelector,
    Expression<Func<TOuter, TInner, TResult>> selector
)

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

  • TOuter
    Тип события внешнего потока.
  • TInner
    Тип события внутреннего потока.
  • TKey
    Тип ключа соединения.
  • TResult
    Тип результата соединения.

Параметры

  • outerKeySelector
    Тип: System.Linq.Expressions. . :: . .Expression< (Of < ( <'Func< (Of < ( <'TOuter, TKey> ) > ) >> ) > ) >
    Селектор для выбора значений ключа из события внешнего потока.
  • innerKeySelector
    Тип: System.Linq.Expressions. . :: . .Expression< (Of < ( <'Func< (Of < ( <'TInner, TKey> ) > ) >> ) > ) >
    Селектор для выбора значения ключа из события внутреннего потока.
  • selector
    Тип: System.Linq.Expressions. . :: . .Expression< (Of < ( <'Func< (Of < ( <'TOuter, TInner, TResult> ) > ) >> ) > ) >
    Выражение сопоставления, которое определяет проекцию на выходе.

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

Тип: Microsoft.ComplexEventProcessing.Linq. . :: . .CepStream< (Of < ( <'TResult> ) > ) >
Поток соединенных событий.

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

В языках Visual Basic и C# этот метод можно вызывать как метод экземпляра для любого объекта типа CepStream< (Of < ( <'TOuter> ) > ) >. Если при вызове этого метода используется синтаксис вызова экземпляра, первый параметр пропускается. Дополнительные сведения см. в разделе https://msdn.microsoft.com/ru-ru/library/bb384936(v=sql.105) или https://msdn.microsoft.com/ru-ru/library/bb383977(v=sql.105).

Замечания

Дополнительные сведения см. в разделе Соединения.

Примеры

В следующем примере события в потоке stream1 сравниваются с событиями в потоке stream2. События в потоке, которые соответствуют критериям равенства, определенным в предложении on (в дополнение к требованию перекрытия интервалов времени для двух событий), соединяются и выводятся в новое событие, которое содержит поля полезных данных i и j из события e1 и поле j из события e2.

// Assuming the following input event type for both stream1 and stream2.
public class MyPayload
{
    public int i;
    public float j;
}

var equiJoin = from e1 in stream1
               join e2 in stream2
               on e1.i equals e2.i
               select new { e1.i, e1.j, e2.j };

См. также

Справочник

CepStream Класс

Пространство имен Microsoft.ComplexEventProcessing.Linq