Разница между Select и SelectMany - PullRequest
935 голосов
/ 06 июня 2009

Я искал разницу между Select и SelectMany, но не смог найти подходящий ответ. Мне нужно узнать разницу при использовании LINQ To SQL, но все, что я нашел, это стандартные примеры массивов.

Может ли кто-нибудь предоставить пример LINQ To SQL?

Ответы [ 13 ]

2 голосов
/ 14 сентября 2016

Более ясно, когда запрос возвращает строку (массив символов):

Например, если список «Фрукты» содержит «яблоко»

«Выбрать» возвращает строку:

Fruits.Select(s=>s) 

[0]: "apple"

«SelectMany» выравнивает строку:

Fruits.SelectMany(s=>s)

[0]: 97  'a'
[1]: 112 'p'
[2]: 112 'p'
[3]: 108 'l'
[4]: 101 'e'
1 голос
/ 09 августа 2018

Еще один пример использования SelectMany + Select для накопления данных объектов подмассива.

Предположим, у нас есть пользователи с телефонами:

class Phone { 
    public string BasePart = "555-xxx-xxx"; 
}

class User { 
    public string Name = "Xxxxx";
    public List<Phone> Phones; 
}

Теперь нам нужно выбрать базовые части всех телефонов для всех пользователей:

var usersArray = new List<User>(); // array of arrays
List<string> allBaseParts = usersArray.SelectMany(ua => ua.Phones).Select(p => p.BasePart).ToList();
0 голосов
/ 23 февраля 2016

Думаю, это лучший способ понять.

            var query =
            Enumerable
                .Range(1, 10)
                .SelectMany(ints => Enumerable.Range(1, 10), (a, b) => $"{a} * {b} = {a * b}")
                .ToArray();

        Console.WriteLine(string.Join(Environment.NewLine, query));

        Console.Read();

Пример таблицы умножения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...