首先,我们需要过滤您的源码流以获取x1事件流。
var x1Stream = from e in sourceStream
where e.ItemId == "X1"
select new {e.ItemId, e.Timestamp}
接下来,我们需要过滤源码流以获取非x1事件流。
var nonX1Stream = from e in sourceStream
where e.ItemId != "X1"
select e;
现在,我们将与非X1事件流加入X1事件流来获取所有的X1事件过程中发生的非X1事件的列表。
var x = from l in x1Stream
from r in nonX1Stream
select new {l.ItemId, l.Timestamp, r};
获得一个X1事件过程中发生的,需要某种HoppingWindow的非X1事件的计数要能够在一个固定的时间段实际上算上流中的事件。你也可以调用ToEnumerable()来在没有窗口的情况下进行分组。
var y = from e in x.ToEnumerable()
group e by new {e.ItemId, e.Timestamp}
into g
select new {g.Key.ItemId, g.Key.Timestamp, Count = g.Count()};
你摇滚。谢谢 – Alwyn 2012-08-10 21:31:41