天天看點

Select & SelectMany

http://blog.csdn.net/lcl_data/article/details/5290604

Select() 和 SelectMany() 的工作都是依據源值生成一個或多個結果值。Select() 為每個源值生成一個結果值。是以,總體結果是一個與源集合具有相同元素數目的集合。與之相反,SelectMany() 将生成單一總體結果,其中包含來自每個源值的串聯子集合。作為參數傳遞到 SelectMany() 的轉換函數必須為每個源值傳回一個可枚舉值序列。然後,SelectMany() 将串聯這些可枚舉序列以建立一個大的序列。

//下面是MSDN的關于select selectmany的例子
            List<Bouquet> bouquets = new List<Bouquet>() 
            {
        new Bouquet { Flowers = new List<string> { "sunflower", "daisy", "daffodil", "larkspur" }},
        new Bouquet{ Flowers = new List<string> { "tulip", "rose", "orchid" }},
        new Bouquet{ Flowers = new List<string> { "gladiolis", "lily", "snapdragon", "aster", "protea" }},
        new Bouquet{ Flowers = new List<string> { "larkspur", "lilac", "iris", "dahlia" }}
    };

            // *********** Select ***********            
            IEnumerable<List<string>> query1 = bouquets.Select(bq => bq.Flowers);

            // ********* SelectMany *********
            IEnumerable<string> query2 = bouquets.SelectMany(bq => bq.Flowers);
           

繼續閱讀