gpt4 book ai didi

C# : Sort list on custom property

转载 作者:行者123 更新时间:2023-11-30 14:27:31 27 4
gpt4 key购买 nike

<分区>

如果这是重复的,我很抱歉。请指出正确的问题。

我有一个名为 MyDate 的类,如下所示

public class MyDate
{
private SqlDateTime m_dateTime;

public MyDate(DateTime dateTime)
{
if (DateTime.Compare(dateTime, (DateTime)SqlDateTime.MinValue) <= 0)
m_dateTime = SqlDateTime.MinValue;
else
m_dateTime = dateTime;
}

public string MMDDYYYYHHMMSS
{
get
{
if(m_dateTime > SqlDateTime.MinValue)
return m_dateTime.Value.ToString("MM/dd/yyyy hh:mm:ss tt");
else
return String.Empty;
}
}
}

我有一个名为 MyEvent 的类,如下所示

public class MyEvent
{
public int EventId{get;set;}
public MyDate StartDate{get;set;}
}

我收集了 MyEvent 之类的

List<MyEvent> myEvents. 

现在我需要按照 StartDate 的降序对 myEvents 进行排序。我遇到的问题是我无法添加 IComparable 或更改 MyDate,因为它是由其他团队编写的,我只是引用 dll。我无法控制 MyDate 代码。任何人都可以帮助我如何做。我创建了一个实现 IComparer 的新比较器类,但无法理解如何使用它和对 myEvents 进行排序。

**更新 1 **

非常感谢 Alexei、Ehsan 和 Dave 帮助我。我尝试了 Dave 的回答并且成功了。我试图以更好的方式做到这一点,因此无需添加任何新属性。我没有尝试使用 StringDateComparer 的 Ehsan 方式,但它帮助我理解了如何在 Order linq 语句中使用 Comparer。最后,正如 Alexei 所指出的,我确实喜欢下面的内容

**更新 2 **

有时我得到 e2.StartDate.MMDDYYYYHHMMSS 和/或 e2.StartDate.MMDDYYYYHHMMSS 的空字符串,所以我更改了如下代码

myEvents.Sort(
delegate(MyEvent e1, MyEvent e2)
{
DateTime dt1;
DateTime dt2;
DateTime.TryParse(e1.StartDateTime.MMDDYYYYHHMMSS, out dt1);
DateTime.TryParse(e2.StartDateTime.MMDDYYYYHHMMSS, out dt2);

return dt2.CompareTo(dt1); // descending
//return dt1.CompareTo(dt2); // ascending
}
);

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com