小编典典

Select 和 SelectMany 的区别

all

我一直在寻找和之间的区别SelectSelectMany但我找不到合适的答案。我需要了解使用 LINQ To SQL
时的区别,但我发现的只是标准数组示例。

有人可以提供 LINQ To SQL 示例吗?


阅读 97

收藏
2022-02-25

共1个答案

小编典典

SelectMany展平返回列表列表的查询。例如

public class PhoneNumber
{
    public string Number { get; set; }
}

public class Person
{
    public IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
    public string Name { 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);

// 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 });

.NET Fiddle 上的现场演示

2022-02-25