簡體   English   中英

使用LINQ和查詢表達式語法進行聚合

[英]Aggregate using LINQ with Query Expression syntax

編輯:我已經完全消除了我的最初問題,以更直接的方式重新提出它。 很抱歉,如果這與任何禮節相抵觸,但我認為在同一主題上發布一個新的禮節會更糟:)

是否可以通過實現自己的SelectMany或類似的查詢語句來編寫此LINQ查詢:

var enumerable = 
    Enumerable.Range(1, 10)
              .Aggregate(new SomeAggregation(),
                         (c, n) =>
                         {
                             var l = c.SomeOperation(); // expensive operation
                             return c.UseIt(l).UseItAgain(l); // the result is needed multiple times
                         });

我在考慮以下方面:

var enumerable = from c in new SomeAggregation().AsSeed()
                 from n in Enumerable.Range(1, 10)
                 from l in c.SomeOperation()
                 select c.UseIt(l).UseItAgain(l);

要么:

var enumerable = from c in new SomeAggregation().AsSeed()
                 from n in Enumerable.Range(1, 10)
                 let l = c.SomeOperation()
                 select c.UseIt(l).UseItAgain(l);

任何幫助,提示,鏈接或類似的東西都將受到高度贊賞!

在我看來,由於let僅評估對Select的調用,因此如果您實現LINQ樣式的Select方法(類似於您已經實現的SelectMany方法),則此方法應該更有效。 我可能會丟失一些東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM