C# 按时间顺序在列表中插入对象

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

我有一个列表,里面有一个DateTime属性的对象。 使用数据选择器和时间选择器,我创建了一个DateTime对象,然后将其插入ObservableCollection。但是,我想按照DateTime的时间顺序插入列表中的元素。我如何才能找到正确的位置将其放入列表中

 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));