繁体   English   中英

根据日期时间使用LINQ对DataTable排序时出现问题

[英]Problem while sorting DataTable with LINQ based on DateTime

我想根据具有日期值的列对DataTable进行排序。 我遇到了问题,因此创建了以下测试方法:

private static void Test()
    {
        DateTime testDate = DateTime.Parse("01/01/2011");

        DataTable table = new DataTable();
        table.Columns.Add("dateValue");
        table.Columns.Add("slNo");

        DataRow row1 = table.NewRow();
        row1["dateValue"] = "01/01/2011";
        row1["slNo"] = "1";

        DataRow row2 = table.NewRow();
        row2["dateValue"] = "01/02/2011";
        row2["slNo"] = "1";
        DataRow row3 = table.NewRow();
        row3["dateValue"] = "02/01/2011";
        row3["slNo"] = "1";
        DataRow row4 = table.NewRow();
        row4["dateValue"] = "01/03/2011";
        row4["slNo"] = "1";

        table.Rows.Add(row1);
        table.Rows.Add(row2);
        table.Rows.Add(row3);
        table.Rows.Add(row4);

        var t = table.AsEnumerable().OrderBy(x => x.Field<DateTime?>("dateValue")).ToList();
    }

我收到以下错误:

Specified cast is not valid.

提供的日期可以解析为DateTime对象。 但是仍然得到上面的错误。 知道缺少什么吗?

我使用C#3.5

尝试更改以下行:

table.Columns.Add("dateValue");

对此:

table.Columns.Add("dateValue", typeof(DateTime?));

如果您在最后一行删除ToList(),它将起作用。

var t = table.AsEnumerable()。OrderBy(x => x.Field(“ dateValue”))。ToList();

似乎转换问题发生在调用ToList()中;

您未指定列类型,因此尝试在Field中使用object:

var t = table.AsEnumerable().OrderBy(x => x.Field<DateTime?>("object")).ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM