Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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# DateTime不起作用的LINQ到SQL OrderBy_C#_.net_Linq To Sql - Fatal编程技术网

C# DateTime不起作用的LINQ到SQL OrderBy

C# DateTime不起作用的LINQ到SQL OrderBy,c#,.net,linq-to-sql,C#,.net,Linq To Sql,我有一个LINQ查询。日期作为字符串存储在数据库中,但我需要按它排序。所以我把它转换成日期时间,但它不按顺序排列 (from m in dbDataContext.TimeCards where m.TIMECARDDATE != "" && m.TIMECARDDATE != null orderby Convert.ToDateTime(m.TIMECARDDATE) descending select Convert.ToDateTim

我有一个LINQ查询。日期作为字符串存储在数据库中,但我需要按它排序。所以我把它转换成日期时间,但它不按顺序排列

   (from m in dbDataContext.TimeCards
    where m.TIMECARDDATE != ""
    && m.TIMECARDDATE != null
    orderby Convert.ToDateTime(m.TIMECARDDATE) descending
    select Convert.ToDateTime(m.TIMECARDDATE)).Distinct().ToList();
知道它为什么不起作用吗?我不能更改数据库,所以我必须按原样处理数据。我把数据按如下顺序重新排序

 2/27/2009
 2/26/2009
 2/25/2009
 2/28/2009
 2/24/2009

首先,您可以使用
string.IsNullOrEmpty()
,而不是检查字符串是否为null或
“”

此外,这应该是可行的。您可能会在此代码之外对其重新排序

请注意,在对其进行foreach(调用
GetEnumerator()
)之前,这不会执行。 因此,如果在迭代之前更改某些内容。。这可能就是原因


p、 s.TIMECARDDATE是对象还是字符串?

尝试在不排序的情况下计算表达式,然后将排序应用于Distinct的结果:

(Linq-To-Sql-Expression).Distinct().OrderByDescending(x => x.TIMECARDDATE).ToList()

首先,您可以使用string.IsNullOrEmptyIt,它在执行该行时实际执行,因为我使用的是.ToList(),这会导致在执行该行时对其求值。TIMECARDDATE是一个字符串。(遗憾的是)此外,LINQ To SQL中不支持string.IsNullOrEmpty。我没有注意到ToList,而且与LINQ To SQL无关。。。。您可以对任何字符串使用string.IsNullOrEmpty。Distinct()并不保证它将保持进入其中的项的顺序,只是它将返回一个不同的结果集。因此,尽管Distinct()的输入最初是正确排序的,但其输出不是。