Difference Between Select and SelectMany

后端 未结 17 1320
长情又很酷
长情又很酷 2020-11-22 05:21

I\'ve been searching the difference between Select and SelectMany but I haven\'t been able to find a suitable answer. I need to learn the differenc

17条回答
  •  眼角桃花
    2020-11-22 05:22

    SelectMany flattens queries that return lists of lists. For example

    public class PhoneNumber
    {
        public string Number { get; set; }
    }
    
    public class Person
    {
        public IEnumerable PhoneNumbers { get; set; }
        public string Name { get; set; }
    }
    
    IEnumerable people = new List();
    
    // Select gets a list of lists of phone numbers
    IEnumerable> phoneLists = people.Select(p => p.PhoneNumbers);
    
    // SelectMany flattens it to just a list of phone numbers.
    IEnumerable phoneNumbers = people.SelectMany(p => p.PhoneNumbers);
    
    // And to include data from the parent in the result: 
    // pass an expression to the second parameter (resultSelector) in the overload:
    var directory = people
       .SelectMany(p => p.PhoneNumbers,
                   (parent, child) => new { parent.Name, child.Number });
    

    Live Demo on .NET Fiddle

提交回复
热议问题