我有这个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
答案 0 :(得分:7)
尝试在不进行排序的情况下评估表达式,然后将排序应用于Distinct:
的结果(Linq-To-Sql-Expression).Distinct().OrderByDescending(x => x.TIMECARDDATE).ToList()
答案 1 :(得分:1)
首先,您可以使用string.IsNullOrEmpty()
,而不是检查字符串是否为空或""
此外,这应该有效。您可能会在此代码之外对其重新排序。
请注意,直到你预告它才会执行(致电GetEnumerator()
)。
所以,如果你在迭代之前改变了一些东西......那可能是原因。
P.S。 TIMECARDDATE是对象还是字符串?