2011-07-25 37 views
2

在lambda表達式中,如何通過DateTime值列表排序而不是對象?例如,我想在下面的查詢最近3個日期:DateTime的列表上的OrderByDescending不起作用?

var hires = (from e in md.Employee 
      where e.HireDate.Year == 2011 
      select e.HireDate).Distinct(); 

//at this point hires = 
    6/3/2011 
    5/15/2011 
    6/1/2011 
    7/1/2011 

我的假設是,我可以做.OrderByDescending(x => x).Take(3),但是當我這樣做,我不明白2011/7/1(只是上面的第3項)。這就像OrderByDescending被忽略。

我在做什麼錯?

+0

你能告訴你的源數據,我們與模仿的樣本? – mellamokb

+0

什麼是您的數據源的類型?我用SQL Server使用LINQ-To-SQL嘲笑一個Employees表,它對我來說工作得很好。 – mellamokb

+0

看起來可能是一個LLBL錯誤。這個特定的代碼集使用LLBL的Linq實現。我在一個單元測試中用常規的Linq嘲笑了一些東西,並且它工作得很好。我會跟進LLBL人。謝謝! –

回答

3

您是否確定要按照正確順序將&區分開來?

嘗試:

var hires = (from e in md.Employee 
    where e.HireDate.Year == 2011 
    select e.HireDate).Distinct().OrderByDescending(e => e); 
+0

這正是我正在做的。不行。 –

+0

奇怪。如果我在Distinct之後添加一個ToList(),它會起作用。 –

+0

@Jess - 我在想'OrderByDescending'要求首先評估整個枚舉。 – ChaosPandion