我有一个问题,我还没有找到解决方案。为了简化问题:我有两个 SQL 表,并且我正在使用 LinQ to SQL。这两个表代表 Courses,其中 CourseType 包含 CourseName 和 TotalSpots,CourseInstance 包含 CourseDate、AmountSignedUp 和对 CourseType 的引用。CourseType 和 CourseInstance 之间存在一对多的关系。
现在我需要帮助的是 Linq 查询/Lambda 表达式来对 CourseType 和 CourseInstance 进行排序(如果可能的话)。我希望按照总空闲点数(从 CourseType 下的每个 CourseInstance 计算;CourseType.TotalSpots - CourseInstance.SignedUp)对 CourseType 进行排序,其中空闲点最多的 CourseType 首先显示。我希望 CourseInstance 按 CourseInstance 有多少空闲点(CourseType.TotalSpots - CourseInstance.AmountSignedUp)进行排序。
我不知道如何解决这个问题。我已经查看了类似的问题和问题,这是我到目前为止所做的,只是为了给出一个基本的想法:
编辑:到目前为止,我已经完成了这段代码,它将正确地对 CourseType 进行排序。我不确定如何对 CourseInstance 子列表进行排序(CourseType.CourseInstance)。我想当我将其转换为列表时,我将不得不在稍后的代码中执行此操作,除非有人对此有很好的解决方案。我可以按照 Arion 的建议去做,为什么我会标记他的答案。
var result= (
from c in _db.CourseType
orderby ((c.TotalSpots * c.CourseInstance.Count) - c.CourseInstance.Sum(
ci => (ci.AmountSignUp ?? 0))) descending
select c
);