【LINQ】Select與SelectMany的區別


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

private class NamedEntity
{
    public NamedEntity(int id, string name) { this.ID = id; this.Name = name; }
    public int ID { get; set; }
    public string Name { get; set; }
}

public Window()
{
    InitializeComponent();

    NamedEntity[] list1 = { new NamedEntity(1, "Albert"), new NamedEntity(2, "Burke"), new NamedEntity(3, "Connor") };
    NamedEntity[] list2 = { new NamedEntity(2, "Albert was here"), new NamedEntity(3, "Burke slept late"), new NamedEntity(4, "Happy") };
    IList<NamedEntity[]> l = new List<NamedEntity[]>() { list1, list2 };
    IList<NamedEntity> tokens = l.SelectMany(a => a).ToList();
    var grp = tokens.GroupBy(a => a.ID);
    IList<NamedEntity> result = grp.SelectMany(a => a.Take(1)).ToList();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM