-3

私は LINQ を初めて使用します。上記のコードは問題なく実行されています。

しかし、最後の文で c.Quantity ではなく c.payload.Quantity と書かれている理由がわかりませんでした。

ググってみたところ、cの結果から取得したペイロードからQuantityという値が得られていることがわかりましたが、それはペイロードが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");
4

1 に答える 1

0

ToIntervalEnumerable は、StreamInsight API およびイベント モデルから単純な古い .NET シーケンスに移行します。後者では、ペイロードに加えて、システム フィールドの StartTime、EndTime、および EventKind にアクセスできます。名前の競合を避けるために、ペイロードをカプセル化する必要があります (ユーザーが定義したペイロードに「StartTime」フィールドがあると想像してください!)。これが Payload フィールドの意味です。

于 2012-07-09T23:22:06.883 に答える