El SelectMany() Methode wird verwendet, um abflachen. eine Sequenz, bei der jedes Element der Sequenz ein separates ist.
Ich habe Klasse user
genauso wie diese
class User
{
public string UserName { get; set; }
public List<string> Roles { get; set; }
}
Haupt:
var users = new List<User>
{
new User { UserName = "Reza" , Roles = new List<string>{"Superadmin" } },
new User { UserName = "Amin" , Roles = new List<string>{"Guest","Reseption" } },
new User { UserName = "Nima" , Roles = new List<string>{"Nurse","Guest" } },
};
var query = users.SelectMany(user => user.Roles, (user, role) => new { user.UserName, role });
foreach (var obj in query)
{
Console.WriteLine(obj);
}
//output
//{ UserName = Reza, role = Superadmin }
//{ UserName = Amin, role = Guest }
//{ UserName = Amin, role = Reseption }
//{ UserName = Nima, role = Nurse }
//{ UserName = Nima, role = Guest }
Sie können Operationen auf jedes Element der Sequenz anwenden
int[][] numbers = {
new[] {1, 2, 3},
new[] {4},
new[] {5, 6 , 6 , 2 , 7, 8},
new[] {12, 14}
};
IEnumerable<int> result = numbers
.SelectMany(array => array.Distinct())
.OrderBy(x => x);
//output
//{ 1, 2 , 2 , 3, 4, 5, 6, 7, 8, 12, 14 }
List<List<int>> numbers = new List<List<int>> {
new List<int> {1, 2, 3},
new List<int> {12},
new List<int> {5, 6, 5, 7},
new List<int> {10, 10, 10, 12}
};
IEnumerable<int> result = numbers
.SelectMany(list => list)
.Distinct()
.OrderBy(x=>x);
//output
// { 1, 2, 3, 5, 6, 7, 10, 12 }
9 Stimmen
Sie können sich den Code für SelectMany mit einer Funktion oder mit zwei Funktionen ansehen referencesource.microsoft.com/#System.Core/System/Linq/
1 Stimmen
Wenn Sie mit Kotlin vertraut sind, hat es ganz ähnliche Implementierungen für Sammlungen wie map aka C# Select und flatMap aka C# SelectMany. Grundsätzlich Kotlin std Bibliothek Erweiterung Funktionen für Sammlungen hat Ähnlichkeit mit C # Linq Bibliothek.
0 Stimmen
Würde man zustimmen, dass
SelectFromMany
wäre ein viel beschreibenderer Name alsSelectMany
?