C# 按时间顺序在列表中插入对象
我有一个列表,里面有一个DateTime属性的对象。 使用数据选择器和时间选择器,我创建了一个DateTime对象,然后将其插入ObservableCollection。但是,我想按照DateTime的时间顺序插入列表中的元素。我如何才能找到正确的位置将其放入列表中C# 按时间顺序在列表中插入对象,c#,xamarin.forms,C#,Xamarin.forms,我有一个列表,里面有一个DateTime属性的对象。 使用数据选择器和时间选择器,我创建了一个DateTime对象,然后将其插入ObservableCollection。但是,我想按照DateTime的时间顺序插入列表中的元素。我如何才能找到正确的位置将其放入列表中 public class HumorDiary { public DateTime Dt { get; set; } } HumorDiary obj= new HumorDiary(); obj.Dt= xx/xx
public class HumorDiary
{
public DateTime Dt { get; set; }
}
HumorDiary obj= new HumorDiary();
obj.Dt= xx/xx/xxxx;
ObservableCollection<HumorDiary> listDiario = new ObservableCollection<HumorDiary>();
listDiario.Insert(Position????, obj);
测试代码后编辑的答案 您可以自己对列表进行排序
listDario.Add(obj);
listDario = new ObservableCollection<HumorDiary>(listDario.OrderBy(x => x.Dt));
有多种方法可以实现这一点,但最简单的方法是使用OrderBymethod。以下是一个例子:
HumorDiary obj1 = new HumorDiary();
obj1.Dt = DateTime.Now;
HumorDiary obj2 = new HumorDiary();
obj2.Dt = DateTime.Now.AddHours(1);
HumorDiary obj3 = new HumorDiary();
obj3.Dt = DateTime.Now.AddHours(5);
ObservableCollection<HumorDiary> listDiario = new ObservableCollection<HumorDiary>();
listDiario.Add(obj3);
listDiario.Add(obj2);
listDiario.Add(obj1);
listDiario = new ObservableCollection<HumorDiary>(listDiario.OrderBy(obj => obj.Dt));
请注意,您必须在排序后将iorderedenumerable强制转换为ObservableCollection。插入新的objectlistDiario.OrderByx=>x.Dt后,只需对列表进行排序;可以吗?为什么不试试看它是否有效?类似的对象,如DateTime或字符串,如副本中的,有一个CompareTo方法,而IList集合,如ObservaleCollection,可以使用二进制搜索,尽管与List不同,ObservaleCollection`没有内置方法,它很简单,可以自己实现。您可以执行二进制搜索或插入排序,这两者都在副本的答案中描述。此答案完全忽略了使用ObservableCollection的意义,即当集合发生更改时,集合通知客户端代码。如果你只是想用一个全新的集合来替换这个集合,那么首先就没有理由使用一个可观察的集合。哦,你是对的!谢谢你纠正我!
HumorDiary obj1 = new HumorDiary();
obj1.Dt = DateTime.Now;
HumorDiary obj2 = new HumorDiary();
obj2.Dt = DateTime.Now.AddHours(1);
HumorDiary obj3 = new HumorDiary();
obj3.Dt = DateTime.Now.AddHours(5);
ObservableCollection<HumorDiary> listDiario = new ObservableCollection<HumorDiary>();
listDiario.Add(obj3);
listDiario.Add(obj2);
listDiario.Add(obj1);
listDiario = new ObservableCollection<HumorDiary>(listDiario.OrderBy(obj => obj.Dt));