TIA*_*ZHU 0 c# linq unity-game-engine
我试图理解下面的代码:
Color32[] colors = mesh.colors32;
IEnumerable<IGrouping<byte, int>> hierarchyMap = colors.Select((color, index) => new { color, index }).GroupBy(c => c.color.g, c => c.index);
Run Code Online (Sandbox Code Playgroud)
我用google只找到了GroupBy(xxx)的一些教程(括号内只有一个参数),说明xxx是组的key。如果括号内有两个参数怎么办?
小智 5
从技术上讲,公认的答案是尝试使用两个键进行分组。它没有解释如果GroupBy括号内有两个参数会怎样。
如果括号内有两个参数,它会根据指定的键选择器函数对序列的元素进行分组,并使用指定的函数对每个组的元素进行投影。
假设我们有一Employee堂课
public class Employee
{
public string Name { get; set; }
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后代码逻辑如下。
var employees = new List<Employee>
{
new Employee { Name="Dave", Age=25 },
new Employee { Name="John", Age=23 },
new Employee { Name="Michael", Age=30 },
new Employee { Name="Bobby", Age=30 },
new Employee { Name="Tom", Age=25 },
new Employee { Name="Jane", Age=21 }
};
var query = employees.GroupBy(employee => employee.Age, employee => employee.Name);
foreach (IGrouping<int, string> employeeGroup in query)
{
Console.WriteLine(employeeGroup.Key);
foreach (string name in employeeGroup)
{
Console.WriteLine($"=> {name}");
}
}
Run Code Online (Sandbox Code Playgroud)
输出将是:
25
=> Dave
=> Tom
23
=> John
30
=> Michael
=> Bobby
21
=> Jane
Run Code Online (Sandbox Code Playgroud)
来自MSDN 的参考