2011-01-22 68 views
0

以下代碼有什麼問題?EntityCollection OrderBy問題

List students = new List();

students = db.Students.Where(c => c.StudentCourses.OrderBy(o => o.EnrolledTo > DateTime.Now.Date)).ToList(); 

我收到錯誤:委託不接受1個參數。

感謝

+2

這是無意義的。你能用英語解釋你想做什麼嗎? – jason 2011-01-22 00:39:04

+0

我希望你的lambda返回的值是可比較的(可排序的)。在這種情況下,所有的值都是真或假(除非EnrolledTo有多個值,在這種情況下,如果不使用First(),Max等,我會預期會發生異常)。你的比較似乎更適合選擇(Where,First等) – holmes 2011-01-22 02:57:38

回答

1

我猜了一下這裏,但我認爲你正在試圖從每個學生的最後日期,並將它與今天的日期。如果您使用OrderBy來完成,您需要撥打Last才能獲得單個值,但您應該只使用Max

注意:請勿在循環中使用DateTime.Now,因爲值會更改。如果在午夜運行查詢,它可能會在循環中間發生變化,並且會得到不一致的結果。在循環之前將值放入變量中。

DateTime today = DateTime.Today; 
students = db.Students 
    .Where(c => c.StudentCourses.Max(o => o.EnrolledTo) > today) 
    .ToList();