![](/img/trans.png)
[英]Why does RegularExpressions.GroupCollection enumerable not work with Linq extension methods?
[英]Translating query comprehension to Enumerable extension methods in LINQ
如何將以下查詢轉換為函數調用? 我知道編譯器在幕后執行此操作但不知道如何查看結果
var query = from item in Enumerable.Range(0, 10)
from item2 in Enumerable.Range(item, 10)
from item3 in Enumerable.Range(item2, 10)
select new { item, item2, item3 };
在這種情況下,它使用SelectMany
和一個名為透明標識符的概念來保留現有的范圍變量。 因此,您的查詢將轉換為:
var query = Enumerable.Range(0, 10)
.SelectMany(item => Enumerable.Range(item, 10),
(item, item2) => new { item, item2 })
.SelectMany(z => Enumerable.Range(z.item2, 10),
(z, item3) => new { z.item, z.item2, item3 });
(在這種情況下, z
是透明標識符。如果在最后一個from
子句之后有where
子句或者除了select
之外的任何東西,則會引入另一個透明標識符。)
翻譯都在C#語言規范的第7.16節中描述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.