[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
SelectMany() дає змогу дістати багатовимірну послідовність таким чином, що в іншому разі знадобиться другий Select() або цикл.
У наведеному нижче прикладі ми побачимо, у чому саме полягає різниця при доступі до властивостей.
Коли ми отримуємо доступ до деяких даних за допомогою select, він видає нам дані, згруповані під батьком (тобто дає кілька масивів). Щоб отримати доступ до висновку, нам потрібно виконати цикл двічі.
Подивимося на прикладі:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
class Program { static void Main() { List<User> users = new List<User>() { new User{ Id = 1, Name = "Alex", Age = 30, Marks = new int[]{ 4,3,3,4 } }, new User{ Id = 2, Name = "Tom", Age = 23, Marks = new int[]{ 3,4,2,4 }}, new User{ Id = 3, Name = "Marry", Age = 21, Marks = new int[]{ 4,2,5,5 }}, new User{ Id = 4, Name = "John", Age = 23, Marks = new int[] { 4, 5, 3, 4 }} }; //Получаем коллекцию массивов List<int[4]> var marks = users.Select(e => e.Marks).ToList(); //Получаем коллекцию всех оценок List<int>(16) var marks2 = users.SelectMany(e => e.Marks).ToList(); } } class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public int[] Marks { get; set; } } |
У тому прикладі, де ми використовуємо SelectMany, він видає вибрані елементи в одному масиві (тобто він видає результат як об’єднання всіх результатів команди select).