まだ解決策を見つけることができていない問題があります。問題を単純化するには、2 つの SQL テーブルがあり、LinQ to SQL を使用しています。2 つのテーブルはコースを表し、CourseType には CourseName と TotalSpots が含まれ、CourseInstance には CourseDate、AmountSignedUp、および CourseType への参照が含まれます。CourseType と CourseInstance の間には 1 対多の関係があります。
今、私が助けを必要としているのは、CourseType と CourseInstance の両方を並べ替えるための Linq クエリ/Lambda 式です (可能な場合)。CourseType を合計空きスポット数 (CourseType の下のすべての CourseInstance から計算されます。CourseType.TotalSpots - CourseInstance.SignedUp) の後に並べ替える必要があります。ここでは、空きスポットが最も多い CourseType が最初に表示されます。CourseInstance にある空きスポットの数 (CourseType.TotalSpots - CourseInstance.AmountSignedUp) によって、CourseInstance を同様に並べ替えたいと思います。
これを解決する方法が頭に浮かびません。私は同様の質問と問題を見てきましたが、これは私がこれまでに作成したものであり、基本的なアイデアを提供するためのものです:
編集:これまでのところ、CourseType を正しく並べ替えるこのコードを実行しました。CourseInstance サブリストをソートする方法がわかりません (CourseType.CourseInstance)。誰かがこれに対する良い解決策を持っていない限り、リストに変換するときにコードの後半でそれを行う必要があると思います。アリオンが提案したように、私はそれを行うことができました.なぜ私は彼の答えをマークします.
var result= (
from c in _db.CourseType
orderby ((c.TotalSpots * c.CourseInstance.Count) - c.CourseInstance.Sum(
ci => (ci.AmountSignUp ?? 0))) descending
select c
);