[英]ListView sorting by two columns
我有一个模型类Reminder
:
public class Reminder
{
public string ReminderName { get; set; }
public ReminderTypes ReminderType { get; set; }
public DateTime ReminderDate { get; set; }
}
我还有一个名为ReminderTypes
的枚举:
public enum ReminderTypes
{
REMINDER_NORMAL,
REMINDER_FLAGGED,
REMINDER_IMPORTANT,
REMINDER_WARNING
}
我创建了我的列表如下。
List<Reminder> reminders = new List<Reminder> {
new Reminder{ ReminderName = "Reminder1", ReminderType = ReminderTypes.REMINDER_FLAGGED , ReminderDate = DateTime.Now.AddDays(5)
},
new Reminder{ ReminderName = "Reminder2", ReminderType = ReminderTypes.REMINDER_IMPORTANT, ReminderDate = DateTime.Now.AddDays(10).AddHours(5).AddMinutes(50)
},
new Reminder{ ReminderName = "Reminder3", ReminderType = ReminderTypes.REMINDER_NORMAL, ReminderDate = DateTime.Now.AddHours(5)
},
new Reminder{ ReminderName = "Reminder4", ReminderType = ReminderTypes.REMINDER_WARNING, ReminderDate = DateTime.Now.AddDays(10).AddHours(5).AddMinutes(49)
},
new Reminder{ ReminderName = "Reminder5", ReminderType = ReminderTypes.REMINDER_FLAGGED, ReminderDate = DateTime.Now.AddDays(5).AddHours(5)
},
};
ListViewReminder.ItemsSource = reminders;
排序规则应该是:
应该在列表视图中的视图:
我怎样才能做到这一点?
您可以使用System.Linq
实现这一点,
var Result = reminders
.Where(e => e.ReminderType == ReminderTypes.REMINDER_FLAGGED)
.OrderBy(e => e.ReminderDate).ToList();
Result.AddRange(reminders
.Where(e => e.ReminderType != ReminderTypes.REMINDER_FLAGGED)
.OrderBy(e => e.ReminderDate));
我会推荐两个改变。
OrderBy
和ThenBy
根据ReminderType
和ReminderDate
对列表进行排序。 public enum ReminderTypes
{
REMINDER_FLAGGED = 0,
REMINDER_NORMAL = 1,
REMINDER_WARNING = 2,
REMINDER_IMPORTANT = 3
}
List<Reminder> ordered = reminders.OrderBy(x => x.ReminderType).ThenBy(x => x.ReminderDate).ToList();
ordered.ForEach(x => Console.WriteLine(x.ReminderName));
输出
Reminder1
Reminder5
Reminder3
Reminder4
Reminder2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.