我有一个 Func
列表定义了一个顺序:
var ordering = new List<Func<Person, IComparable>>
{ x => x.Surname, x => x.FirstName };
我可以用类似...的方式排序结果
people = people.OrderBy(ordering[0]).ThenBy(ordering[1]);
当列表可以包含任意数量的顺序排序时,我正在尝试弄清楚如何执行上述操作。可能吗?
最佳答案
people = people.OrderBy(ordering[0]).ThenBy(ordering[1]).ThenBy(ordering[2]);
与
相同var orderedPeople = people.OrderBy(ordering[0]);
orderedPeople = orderedPeople.ThenBy(ordering[1]);
orderedPeople = orderedPeople.ThenBy(ordering[2]);
people = orderedPeople;
所以你只需像这样写一个循环:
if (ordering.Count != 0)
{
var orderedPeople = people.OrderBy(ordering[0]);
for (int i = 1; i < ordering.Count; i++)
{
orderedPeople = orderedPeople.ThenBy(ordering[i]);
}
people = orderedPeople;
}
关于c# - Linq to Objects 按任意数量的参数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7322983/