首先,我們需要過濾您的源碼流以獲取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