0

我在我的系统上使用 asp.net 2005 并创建一个应用程序。我对日期格式排序有疑问。我有一个包含三个字段的表格,例如“用户名、日期时间、访问页面”。

我的记录如下

user name     date time              visited page
    xyz          4/4/2013 5:30:45 PM     aaa.aspx    
    xyz          4/4/2013 6:35:15 PM     aaa.aspx    
    xyz          4/4/2013 7:55:45 PM     aaa.aspx    
    xyz          4/4/2013 10:05:45 PM     aaa.aspx    
    xyz          4/4/2013 11:06:45 PM     aaa.aspx

我想在不使用 java 脚本或 jquery 的情况下对其进行排序。并且输出应该是

user name     date time              visited page    
xyz          4/4/2013 11:06:45 PM     aaa.aspx    
xyz          4/4/2013 10:05:45 PM     aaa.aspx    
xyz          4/4/2013 7:55:45 PM     aaa.aspx    
xyz          4/4/2013 6:35:15 PM     aaa.aspx    
xyz          4/4/2013 5:30:45 PM     aaa.aspx

但我得到了这样的输出

user name     date time              visited page    
xyz          4/4/2013 7:55:45 PM     aaa.aspx    
xyz          4/4/2013 6:35:15 PM     aaa.aspx    
xyz          4/4/2013 5:30:45 PM     aaa.aspx
xyz          4/4/2013 11:06:45 PM     aaa.aspx    
xyz          4/4/2013 10:05:45 PM     aaa.aspx 

我试图通过数据视图对此进行排序,但它无法正常工作,任何人都可以帮助我解决这个问题。

4

3 回答 3

1

将 CSV 设置为 ODBC 源。然后您必须使用 Schema.ini 并将该字段设置为日期时间。请参阅链接:http: //msdn.microsoft.com/en-us/library/ms709353.aspx

它应该解释这一点。然后,一旦你完成了,你可以做一个 SQL 查询,然后做一个简单的

  SELECT * ORDER BY [date time] desc 

我个人讨厌使用纯文本文件,如果您可以使用 DTS 并将其放入某种关系数据库中,那将是一个好的开始。

于 2013-04-05T13:45:22.620 回答
1

将您的 .csv 值读入具有强类型 DateTime 属性的对象,然后进行排序。

CsvValue[] values = ReadCsvFile().OrderBy(value => value.DateTime);

CsvValue 在哪里

public class CsvValue
{
   public string UserName {get; set;}
   public DateTime DateTime {get; set;}
   public string VisitedPage {get; set;}
}
于 2013-04-05T13:46:18.533 回答
1

还有许多其他方法可以读取 CSV,包括原始文本文件和简单的字符串解析。您可以在此处使用其他答案中的一些建议,或者您可以将结果填充到 DataTable 或其他任何内容中。使用任何你觉得舒服的东西。

其他答案中没有提到的重要一点是,您需要明确说明您正在阅读的日期时间格式。例如,我怎么知道1/2/2013代表 1 月 2 日或 2 月 1 日?

由于您拥有的文件没有使用不变的日期格式(例如 ISO8601),因此您应该在某处明确提供格式,例如:

DateTime dt = DateTime.ParseExact(YourDateString,
                                  "M/d/yyyy",  // or "d/M/yyyy"
                                  CultureInfo.InvariantCulture);
于 2013-04-05T15:03:11.240 回答