LINQ-To-SQL OrderBy,DateTime不起作用

时间:2009-10-25 13:03:42

标签: c# .net linq-to-sql

我有这个LINQ查询。日期作为字符串存储在数据库中,但我需要按顺序排序。所以我将它转换为DateTime,但它没有订购。

   (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

2 个答案:

答案 0 :(得分:7)

尝试在不进行排序的情况下评估表达式,然后将排序应用于Distinct:

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

答案 1 :(得分:1)

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

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

请注意,直到你预告它才会执行(致电GetEnumerator())。 所以,如果你在迭代之前改变了一些东西......那可能是原因。

P.S。 TIMECARDDATE是对象还是字符串?