csv C# DataTable按0:00:00格式按列排序

amrnrhlw  于 12个月前  发布在  C#
关注(0)|答案(2)|浏览(95)

我处于一个特殊的情况。我有两个数据表,最终合并在一起。

//make third combined datatable 
        DataTable dtAll = new DataTable();            

        dtAll.Merge(dt1);
        dtAll.Merge(dt2);

        dtAll.DefaultView.Sort = "TestTime ASC";

正如您所看到的,在当前代码中,它将第二个表的结果追加到第一个表的末尾。我需要这个完整的数据集排序,由测试时间。
问题是TestTime是一个“0:00:00”时间格式字段(见下文)

这段代码什么也不做:

dtAll.DefaultView.Sort = "TestTime ASC";

有什么帮助吗?只是需要一种方法来按0:00:00时间格式排序,如上所示。

uqjltbpv

uqjltbpv1#

我猜TestTime是一个String-列,不是吗?然后你可以将它们解析为TimeSpan,并使用Linq-To-DataTable进行排序:

dtAll = dtAll.AsEnumerable()
    .OrderBy(r => TimeSpan.Parse(r.Field<string>("TestTime")))
    .CopyToDataTable();

你也可以使用TimeOnly.Parse,它应该以同样的方式工作。

vvppvyoh

vvppvyoh2#

你首先需要接受新的行,然后它正确排序

dtAll.Merge(dt1);
            dtAll.Merge(dt2);

            dtAll.AcceptChanges();
            view = dtAll.DefaultView;
            view.Sort = "TestTime ASC";

相关问题