自定义排序方式,如何让用户选择要排序的字段 列表
本文关键字:排序 字段 列表 用户 方式 自定义 选择 | 更新日期: 2023-09-27 18:33:30
我有一个List<T>
,现在我必须向用户显示一个页面,其中对象中的每个字段都带有复选框。
现在,如果用户选中其中任何一个,或者检查所有它们,或者让我们说选择它们中的任何一个都没有,我如何相应地对我的列表进行排序?
用户可以从中选择任意组合的大约 8 个字段,因此列表中的数据应相应地排序。
我目前正在使用List<>
方法OrderBy()
.
任何帮助将不胜感激。
这是我如何使用该方法,但就我而言,现在有 8 个字段,它们可以变成多少种组合,我不能在那里放这么多 if。
排序列表 = 列表。OrderBy(x => x.QuantityDelivered).thenBy(x => x.Quantity)。ToList();
假设您能够在代码中确定单击哪个字段进行排序:
IEnumerable<T> items = // code to get initial data,
// set to be an IEnumerable. with default sort applied
List<string> sortFields = // code to get the sort fields into a list,
// in order of selection
bool isFirst = true;
foreach (string sortField in sortFields) {
switch (sortField )
{
case "field1":
if (isFirst) {
items = items.OrderBy(x => x.Field1);
} else {
items = items.ThenBy(x => x.Field1);
}
break;
case "field2":
if (isFirst) {
items = items.OrderBy(x => x.Field2);
} else {
items = items.ThenBy(x => x.Field2);
}
break;
// perform for all fields
}
isFirst = false
}
var listOfItems = items.ToList();
列表现在按所选字段排序,可以以您认为合适的任何方式使用。
将排序字段转换为枚举可能更安全,并switch
,以避免复制字符串时出错。