将两个 dd/mm/yyy 字符串数组合并为一个,同时按 C# asp.net 顺序排列日期

本文关键字:net 排列 顺序 一个 日期 asp 合并 mm dd 两个 yyy | 更新日期: 2023-09-27 18:37:26

我正在调用两个数据表(IncDate和ExpDate)中的两个字段。它们存储为 dd/MM/yyyy,当我对数据库进行 sql 调用时,我使用 Order by Convert(DATETIME, IncDate, 103) 来按顺序排列日期。我为我的每个IncDate和ExpDae列执行此操作。我使用以下方法将其中每个添加到字符串数组中:

 var stringArr = Dt.AsEnumerable().Select(r => r.Field<string>("IncDate")).ToArray();
var stringArr2 = Dt2.AsEnumerable().Select(r => r.Field<string>("ExpDate")).ToArray();

当我尝试将两者合并到一个字符串数组中时,问题就来了。我通过使用:

string[] combined = stringArr.Concat(stringArr2).ToArray();

虽然这只是随机添加日期。我想在组合字符串中组合和排序日期,但我不确定如何做到这一点。

因此,例如在IncDate中,我可能有(01/03/2016,02/03/2016,03/

03/2016,06/03/2016)和ExpDate我可能有(02

/03/2016,03/03/2016,04/03,2016),当我将它们组合在一起时,它们应该按顺序排列(01/03/2016,02/03/2016,02/03/2016,03/03/2016,04/03/2016,06/03/2016)

提前干杯!

将两个 dd/mm/yyy 字符串数组合并为一个,同时按 C# asp.net 顺序排列日期

  1. 您的 ORDER BY 子句中已经有一个 CONVERT 语句,用于将字符串日期转换为实际日期。在 SELECT 子句中使用相同的 CONVERT 语句。

  2. 将值读取为日期时间而不是字符串:

     var dateArr = dt.AsEnumerable().Select(r => r.Field<DateTime>("IncDate")).ToArray();
    
  3. 连接数组后,使用 OrderBy(x => x)Array.Sort 对其进行排序。

  4. 承诺自己从现在开始始终在数据库中使用适当的数据类型,而不是在字符串中"隐藏"日期。这样,您将来就不需要这些转换解决方法。

关于处理存储在不适当数据类型中的"遗留"数据的一般提示:尽快将数据转换为实际数据类型(请注意,我们在步骤 1 中执行此操作),如果需要,请尽可能地将其转换回来。