【发布时间】:2015-12-09 19:31:01
【问题描述】:
我得到了一个包含date、text 和finished 属性的条目列表。
我想按date 对这个列表进行排序。日期格式如下:dd.mm.yyyy
如果我运行这段代码,结果会像什么都没发生一样混淆。怎么了?
这是我的代码:
// in the namespace
struct entry
{
public string date;
public string text;
public bool finished;
public entry(string _date, string _text, bool _finished)
{
date = _date;
text = _text;
finished = _finished;
}
}
// in my class
List<entry> entrys = new List<entry>();
// ** fill the list with content **
// where i want to sort the list
entrys.Sort(delegate (entry x, entry y)
{
string date1 = x.date;
string date2 = y.date;
// 0123456789
// dd.mm.yyyy
int day1 = Convert.ToInt32(date1.Substring(0, 2));
int day2 = Convert.ToInt32(date2.Substring(0, 2));
int month1 = Convert.ToInt32(date1.Substring(3, 2));
int month2 = Convert.ToInt32(date2.Substring(3, 2));
int year1 = Convert.ToInt32(date1.Substring(6, 4));
int year2 = Convert.ToInt32(date2.Substring(6, 4));
if (year1 > year2) return -1;
if (month1 > month2) return -1;
if (day1 > day2) return -1;
return 1;
});
【问题讨论】:
-
不是答案,但如果两者相等,您的方法永远不会返回 0
-
如果 year1
-
您使用字符串存储日期而不是日期类型的任何原因?可以为您与另一个日期进行数据比较。
-
字符串类型的代码只是寻找错误的东西......(也完全遵循“字符串类型”的口头禅,你也不应该使用 bool)。 :) 对类型本身或至少在比较方法中使用正确的
DateTime有什么问题? -
天哪,我只是愚蠢,我不知何故认为如果 year1 > year2 是假的,那 year1 !