如何将日期转换为字符串并使用Linq进行比较

时间:2016-11-15 20:10:54

标签: c# linq

Sql Query的一部分:

...
RIGHT(cast([ADJ_DATE] AS DATE), 5) DH
...

在DataTable(dt)中将列作为以下格式返回:

11-15
11-13
11-20
11-14

尝试执行以下操作:

string dat = DateTime.Now.AddDays(-2).ToString("MM-dd"); // which returns 11-13
var k = dt.AsEnumerable().Any(row => dat == Convert.ToString(row.Field<DateTime>("DH"))); //should return the row with 11-13, but instead I get an error

错误:

Exception Details: System.InvalidCastException: Specified cast is not valid.

如何更新代码以便我获得所需的结果。

1 个答案:

答案 0 :(得分:2)

您不需要DateTime

var k = dt.AsEnumerable().Any(row => dat == row.Field<string>("DH")); 

RIGHT

  

返回具有指定编号的字符串的右侧部分   人物。

请查看here

<强>更新

如果您想获取DH值等于dat的所有行,那么您应该使用Where方法:

var rows = dt.AsEnumerable().Where(row => dat == row.Field<string>("DH"));