代码之家  ›  专栏  ›  技术社区  ›  Si8

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

  •  0
  • Si8  · 技术社区  · 8 年前

    ...
    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 回复  |  直到 8 年前
        1
  •  2
  •   Christos    8 年前

    你不需要 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"));