我找到了以下关于.Select和.SelectMany之间区别的例子。
public class PhoneNumber
{
public string Number { get; set; }
}
public class Person
{
public IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
}
IEnumerable<Person> people = new List<Person>();
// Select gets a list of lists of phone numbers
IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);
// SelectMany flattens it to just a list of phone numbers.
IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);
但我实际上无法准确理解 "Select 获取一个电话号码列表的列表" 和 "SelectMany 将其扁平化为仅包含电话号码的列表" 之间的区别。
第二个问题,写作方式有何不同:
people.Select(p => p.PhoneNumbers);
&
people.Include(p => p.PhoneNumbers);
List<List<A>>
,而是由源的所有内部列表的项目连接而成的List<A>
。 - MarcinJuraszek