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
结果事件的负载类型。
参数
- source
类型:Microsoft.ComplexEventProcessing.Linq. . :: . .CepStream< (Of < ( <'TInput> ) > ) >
外部输入流。
- bind
类型:System.Linq.Expressions. . :: . .Expression< (Of < ( <'Func< (Of < ( <'CepStream< (Of < ( <'TInput> ) > ) >, CepStream< (Of < ( <'TBind> ) > ) >> ) > ) >> ) > ) >
内部输入流。
- selector
类型:System.Linq.Expressions. . :: . .Expression< (Of < ( <'Func< (Of < ( <'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 };