2011-01-22 9 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

+0

ラムダから返された値は、同等(ソート可能)なものであると私は期待しています。この場合、すべての値はtrueまたはfalseのいずれかになります(EnrolledToに複数の値がない場合、First()、Maxなどを使用しない場合は例外が予想されます)。あなたの比較は、選択のためにもっと適切であるようです(Where、Firstなど) – holmes

答えて

1

私はここに少し推測するが、私はあなたがそれぞれの学生から最新の日付を取得し、今日の日付と比較しようとしていると思います。 OrderByを使用する場合は、Lastコールが必要ですが、単一の値を取得するには、Maxを使用するだけです。

注:値が変更されると、ループ内でDateTime.Nowを使用しないでください。真夜中にクエリを実行すると、ループの途中でクエリが変わる可能性があり、矛盾した結果が得られます。変数の値をループの前に置きます。

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

+1。しかし、彼はリストを返すので、私は彼がちょうど登録日によって学生を並べ替えることを望んでいると仮定しています。彼はどこから選択して使用するべきですか(そして最大/最後を取り除きます) – Rob

+0

コースがまだ終了していない、つまり今日の日付が登録されている学生のリストが必要です。 – scouserider

+0

@ user583341:私はそれを推測するのにはかなり良いと思われます。 :) – Guffa

関連する問題