Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将两个dd/mm/yyy字符串数组合并为一个,同时将日期按asp.net c顺序排列_C#_Asp.net_Datatable - Fatal编程技术网

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

C# 将两个dd/mm/yyy字符串数组合并为一个,同时将日期按asp.net c顺序排列,c#,asp.net,datatable,C#,Asp.net,Datatable,我从两个数据表IncDate和ExpDate调用两个字段。它们存储为dd/MM/yyyy,当我对数据库进行sql调用时,我使用Order by ConvertDATETIME、IncDate、103将日期按顺序排列。我对每个IncDate和ExpDae列都这样做。 我使用以下命令将其中的每一项添加到字符串数组中: var stringArr = Dt.AsEnumerable().Select(r => r.Field<string>("IncDate")).ToArray(

我从两个数据表IncDate和ExpDate调用两个字段。它们存储为dd/MM/yyyy,当我对数据库进行sql调用时,我使用Order by ConvertDATETIME、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();
虽然这只是随机添加日期。我想把日期组合起来,并在组合字符串中排序,但我不知道如何做到这一点

例如,在IncDate中,我可能有2016年3月1日、2016年3月2日、2016年3月3日、2016年6月3日,而在ExpDate中,我可能有2016年3月2日、2016年3月3日、2016年4月3日,当我将它们合并时,它们的顺序应该是2016年3月1日、2016年3月3日、2016年3月3日、2016年3月3日、2016年4月3日、2016年6月3日

提前干杯

在ORDERBY子句中已经有一个CONVERT语句可以将字符串日期转换为实际日期。在SELECT子句中使用相同的CONVERT语句

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

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

承诺从现在起,在数据库中始终使用适当的数据类型,而不是将日期隐藏在字符串中。这样,将来就不需要这些转换工作区了


关于使用存储在不适当数据类型中的旧数据的一般提示:尽快将数据转换为实际数据类型请注意,我们在步骤1中会这样做,如果需要,请尽可能晚地将其转换回。

那么您希望如何组合它们?最好将它们作为DateTime加载。然后在Concat和ToArray之间是一个简单的OrderByx=>x。我的经验法则是,只有在UI中,日期和\或时间才应该用字符串表示。您希望如何对它们进行排序?全部是A1,然后全部是A2?按日期值排序?我已经更新了问题OK juharr我可能会这样做,但这将是最后的手段,因为它会改变网站上的所有其他内容我现在就试试,谢谢我知道这是一个糟糕的做法谢谢你我就快到了,但是当我尝试将这些数据添加到我的图表中时,这是说不能隐式地将数据类型system.datetime[]转换为字符串[]@Stuart:显然,您的图表期望数据为字符串。正确的方法是修改图表以接受日期时间值。如果不可能,可以使用var stringArr=dateArr.Selectd=>d将数组转换回字符串。ToString@dd\/MM\/yyyy.ToArray;最后一个问题。当我运行此语句时,按CONVERTDATETIME,IncDate,103从Incomings ORDER按CONVERTDATETIME,IncDate,103选择CONVERTDATETIME,IncCost,我在这一行var dateArr=Dt.AsEnumerable.Selectr=>r.FieldIncDate.ToArray上得到一个错误;说IncDate不属于表orry我忘了在查询中添加AS IncDate
 var dateArr = dt.AsEnumerable().Select(r => r.Field<DateTime>("IncDate")).ToArray();