Payload-LINQ的含义

时间:2012-07-08 23:02:53

标签: linq streaminsight

我是LINQ的新手,上面的代码对我来说很好。

但我无法弄清楚为什么在最后一句c.payload.Quantity被写而不是c.Quantity。

当我用Google搜索时,我发现值是从我们从c中的结果中获得的有效负载中获得的,这是否意味着有效负载是filterQuery的最终输出?

var orderData = new[]
{
 new {OrderDate = new DateTime(2011,1,1,8,30,00), ItemID = "100", UnitPrice = 0.99, Quantity =5},
 new {OrderDate = new DateTime(2011,1,1,8,31,00), ItemID = "200", UnitPrice = 3.99, Quantity =2},
 new {OrderDate = new DateTime(2011,1,1,9,02,00), ItemID = "200", UnitPrice = 1.50, Quantity =1},
 new {OrderDate = new DateTime(2011,1,1,9,07,00), ItemID = "100", UnitPrice = 4.10, Quantity =3}
};

var orders = orderData.ToPointStream(Application,ev=>PointEvent.CreateInsert(ev.OrderDate,ev),AdvanceTimeSettings.StrictlyIncreasingStartTime);

var filterQuery = from o in orders where o.Quantity>=2 select o;

(from o in filterQuery.ToIntervalEnumerable() where o.EventKind == EventKind.Insert 
select new {o.StartTime,o.EndTime,o.Payload.Quantity}).Dump("Heading");

1 个答案:

答案 0 :(得分:0)

ToIntervalEnumerable从StreamInsight API和事件模型转换为普通的旧.NET序列。在后者中,除了有效负载之外,您还可以访问系统字段StartTime,EndTime和EventKind。为了避免命名冲突,需要封装有效负载(想象一下由用户定义的有效负载有一个字段'Sta​​rtTime'!)。这是Payload字段的含义。