【发布时间】:2021-02-05 10:14:18
【问题描述】:
我有一个 void SortTable,我可以根据属性(在本例中为 ticketId)对类实例数组进行排序。
private void SortTable()
{
if (ascending)
{
Array.Sort(tickets,
delegate (TicketData x, TicketData y) { return x.ticketId.CompareTo(y.ticketId); });
} else
{
Array.Sort(tickets,
delegate (TicketData x, TicketData y) { return y.ticketId.CompareTo(x.ticketId); });
}
ascending = !ascending;
}
它有效,但我有一个包含更多字段的表,我想按这些字段进行排序。我可以通过为表中的每个字段创建空白来解决这个问题。它就像 SortByTicketId()、SortByName() 等。但我想要一个函数来处理这个。
我想写这样的东西:
private void SortTable(sortByThisProperty)
{
Array.Sort(tickets,
delegate (TicketData x, TicketData y) { return x.[sortByThisProperty].CompareTo(y.[sortByThisProperty]); });
}
但是这个伪代码不起作用,我看不出有办法将属性作为参数传递。 一定有其他方法可以做到这一点?
【问题讨论】:
-
看看动态linq
-
使用 LINQ 是最好的选择。您是否可以控制要排序的属性,还是允许用户选择要排序的内容?
标签: c# arrays class sorting blazor