SelectMany(TInput, TBind, TResult) 方法 (CepStream(TInput), Expression(Func(CepStream(TInput), CepStream(TBind))), Expression(Func(TInput, TBind, TResult)))

生成基于两个输入流的交叉联接的流。

命名空间:  Microsoft.ComplexEventProcessing.Linq
程序集:  Microsoft.ComplexEventProcessing(在 Microsoft.ComplexEventProcessing.dll 中)

语法

public static CepStream<TResult> SelectMany<TInput, TBind, TResult>(
    this CepStream<TInput> source,
    Expression<Func<CepStream<TInput>, CepStream<TBind>>> bind,
    Expression<Func<TInput, TBind, TResult>> selector
)

类型参数

  • TInput
    来自外部输入流的事件负载类型。
  • TBind
    来自内部输入流的事件负载类型。
  • TResult
    结果事件的负载类型。

参数

返回值

类型:Microsoft.ComplexEventProcessing.Linq. . :: . .CepStream< (Of < ( <'TResult> ) > ) >
结果是外部流和内部流的交叉联接的流。

用法说明

在 Visual Basic 和 C# 中,您可以对 CepStream< (Of < ( <'TInput> ) > ) > 类型的任何对象将此方法作为实例方法调用。在您使用实例方法语法调用此方法时,将忽略第一个参数。有关详细信息,请参阅https://msdn.microsoft.com/zh-cn/library/bb384936(v=sql.105)https://msdn.microsoft.com/zh-cn/library/bb383977(v=sql.105)

注释

请注意,即使在交叉联接中,如果生存期重叠,只匹配来自内部和外部流的事件并作为联接结果输出。有关详细信息,请参阅联接

示例

在下面的示例中,stream1 中负载字段 i 中的值大于 3 的事件与 stream2 中负载字段 j 中的值小于 10 的事件进行联接。

var crossJoin = from e1 in stream1
                from e2 in stream2
                where e1.i > 3 && e2.j < 10
                select new { e1.i, e2.j };

请参阅

参考

CepStream 类

SelectMany 重载

Microsoft.ComplexEventProcessing.Linq 命名空间