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

本文关键字:Linq 比较 串并 字符串 日期 转换 字符 | 更新日期: 2023-09-27 18:18:08

部分Sql查询:

...
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.

我如何更新代码,使我得到想要的结果。

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

你不需要DateTime

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

RIGHT

返回具有指定数字的字符串的右边部分的字符。

请看这里。

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

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