C# DateTime不起作用的LINQ到SQL OrderBy
我有一个LINQ查询。日期作为字符串存储在数据库中,但我需要按它排序。所以我把它转换成日期时间,但它不按顺序排列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
(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()的输入最初是正确排序的,但其输出不是。