1. ホーム
  2. c#

[解決済み] SelectとSelectManyの違い

2022-03-16 04:13:47

質問

との違いを調べてみました。 SelectSelectMany が、適切な回答が見つかりません。LINQ To SQLを使用する際の違いを学ぶ必要があるのですが、私が見つけたのは標準的な配列の例ばかりです。

どなたかLINQ To SQLの例を提供していただけませんか?

どのように解決するのですか?

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でのライブデモ