次のコードで何が問題になっていますか?EntityCollection OrderByの問題
List students = new List();
students = db.Students.Where(c => c.StudentCourses.OrderBy(o => o.EnrolledTo > DateTime.Now.Date)).ToList();
私はエラーを取得しています:デリゲートは1つの引数を取りません。
おかげ
次のコードで何が問題になっていますか?EntityCollection OrderByの問題
List students = new List();
students = db.Students.Where(c => c.StudentCourses.OrderBy(o => o.EnrolledTo > DateTime.Now.Date)).ToList();
私はエラーを取得しています:デリゲートは1つの引数を取りません。
おかげ
私はここに少し推測するが、私はあなたがそれぞれの学生から最新の日付を取得し、今日の日付と比較しようとしていると思います。 OrderBy
を使用する場合は、Last
コールが必要ですが、単一の値を取得するには、Max
を使用するだけです。
注:値が変更されると、ループ内でDateTime.Now
を使用しないでください。真夜中にクエリを実行すると、ループの途中でクエリが変わる可能性があり、矛盾した結果が得られます。変数の値をループの前に置きます。
DateTime today = DateTime.Today;
students = db.Students
.Where(c => c.StudentCourses.Max(o => o.EnrolledTo) > today)
.ToList();
+1。しかし、彼はリストを返すので、私は彼がちょうど登録日によって学生を並べ替えることを望んでいると仮定しています。彼はどこから選択して使用するべきですか(そして最大/最後を取り除きます) – Rob
コースがまだ終了していない、つまり今日の日付が登録されている学生のリストが必要です。 – scouserider
@ user583341:私はそれを推測するのにはかなり良いと思われます。 :) – Guffa
これは無意味です。あなたがしようとしていることを英語で説明できますか? – jason
ラムダから返された値は、同等(ソート可能)なものであると私は期待しています。この場合、すべての値はtrueまたはfalseのいずれかになります(EnrolledToに複数の値がない場合、First()、Maxなどを使用しない場合は例外が予想されます)。あなたの比較は、選択のためにもっと適切であるようです(Where、Firstなど) – holmes