【问题标题】:How do I sort a datatable i've created in to ascending order of date using C#如何使用 C# 按日期升序对创建的数据表进行排序
【发布时间】:2021-02-14 03:28:06
【问题描述】:

我正在学习 C#,以帮助我完成作为 RPA 开发人员的日常工作。因此,我创建了一个带有 DateTime 类型列的数据表,并且我试图将表排序为升序日期,因为我最终想要提取表中具有以“E”开头的“收据编号”的条目最新日期。

这是我的代码 DataTable Receipts = new DataTable();

        Receipts.Clear(); 
        Receipts.Columns.Add("Date", typeof(DateTime));
        Receipts.DefaultView.Sort = "Date ";
        Receipts.Columns.Add("Receipt Data", typeof(string));
        DataRow dr = Receipts.NewRow(); 
        dr[0] = "10 January 2021"; 
        dr[1] = "Receipt number is E1039742083";
        Receipts.Rows.Add(dr); 
        dr = Receipts.NewRow(); 
        dr[0] = "11 January 2021"; 
        dr[1] = "Receipt number is not found";
        Receipts.Rows.Add(dr); 
        dr = Receipts.NewRow(); 
        dr[0] = "11 January 2021"; 
        dr[1] = "Receipt number is F1039742083";
        Receipts.Rows.Add(dr); 
        dr = Receipts.NewRow(); 
        dr[0] = "12 January 2021"; 
        dr[1] = "Receipt number is E1039742083";
        Receipts.Rows.Add(dr); 
        dr = Receipts.NewRow(); 
        dr[0] = "12 January 2021"; 
        dr[1] = "Receipt number is not found";
        Receipts.Rows.Add(dr); 
        Receipts.DefaultView.Sort = "Date ASC";
        foreach (DataRow datarow in Receipts.Rows)
        {
            foreach (var item in datarow.ItemArray)
                Console.WriteLine(item);
        } }

但这行似乎不起作用 Receipts.DefaultView.Sort = "Date ASC";当它在 Visual Studio 中运行时,它总是先运行最旧的日期

任何建议将不胜感激

谢谢

约旦

【问题讨论】:

  • 你试过了吗.Sort = “Date”
  • 我会创建一个额外的列来存储“E”报告的含义——即使该列是隐藏的——因为该关键元素只是较长字符串的一部分,甚至在开始时也没有的字符串。此外,"10 January 2021" 是一个字符串,而不是日期 - 为了确保数据符合预期,我会为数据列创建日期。使用单元格/列格式化功能来格式化显示
  • 将 DateTime 对象添加到行中:例如,receipts.Rows.Add(new DateTime(2021, 1, 10), "Receipt number is E1039742083");(顺便说一句,您不需要所有这些 DataRow dr = Receipts.NewRow(); 等)。然后,DefaultView 决定数据如何呈现,DataTable 本身不受影响。如果将 DataTable 设置为某个 Control 的 DataSource,则数据将按顺序呈现。请注意,您正在设置Date ASC,它将首先显示较旧的日期。将DESC 设置为按较新日期排序(最近的日期在前)。
  • 感谢您的回答,我的“C#”同事今天将帮助我完成它们,但从现在看来它们是有意义的,我期待尝试它们

标签: c# date datatable


【解决方案1】:
Receipts.DefaultView.Sort = "Date ASC";
Receipts= Receipts.DefaultView.ToTable();

在这里找到它 - DataTable.DefaultView.Sort Doesn't Sort

【讨论】:

  • 非常感谢您的分享,我今天会尝试您的解决方案并阅读文章
猜你喜欢
  • 2011-11-22
  • 2011-07-02
  • 1970-01-01
  • 2017-12-30
  • 2012-02-18
  • 2016-10-15
  • 2018-06-14
  • 2011-12-24
  • 1970-01-01
相关资源
最近更新 更多