[英]Problem while sorting DataTable with LINQ based on DateTime
I want to sort a DataTable based on a column which has date value. 我想根据具有日期值的列对DataTable进行排序。 I was running in to issues so i created following test method: 我遇到了问题,因此创建了以下测试方法:
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();
}
I get Following error: 我收到以下错误:
Specified cast is not valid.
The date provided can be parsed to DateTime object. 提供的日期可以解析为DateTime对象。 But still it get the above error. 但是仍然得到上面的错误。 Any idea what is missing? 知道缺少什么吗?
I use C# 3.5 我使用C#3.5
Try changing the following line: 尝试更改以下行:
table.Columns.Add("dateValue");
to this: 对此:
table.Columns.Add("dateValue", typeof(DateTime?));
If you remove the ToList() in last line it works. 如果您在最后一行删除ToList(),它将起作用。
var t = table.AsEnumerable().OrderBy(x => x.Field("dateValue")).ToList(); var t = table.AsEnumerable()。OrderBy(x => x.Field(“ dateValue”))。ToList();
It appears the cast problem happens in the call ToList(); 似乎转换问题发生在调用ToList()中;
您未指定列类型,因此尝试在Field中使用object:
var t = table.AsEnumerable().OrderBy(x => x.Field<DateTime?>("object")).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.