[英]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.