【发布时间】:2009-09-27 06:12:42
【问题描述】:
假设我的数据库中有这个
courseName : English101
Mark : 80
OutOff : 100
Weight : 50
CourseName : English101
Mark : 30
OutOff : 50
Weight : 10
CourseName: Chem101
Mark : 100
OutOff: 100
Weight : 100
现在我想找出这两门课程的总成绩
第一个英语101。
(80 /100) * 50 = 40(达到的重量) (30 / 50) * 10 = 6
40 + 6 = 46 / 100(课程重量总和将始终达到 100% - 这意味着 40% 的重量尚未分配,但仍会再次计入总分。)
因此,如果该学生从英语 101 中辍学,他们的最终成绩将是 46%。
现在我根本不知道该怎么做。起初,我尝试在从数据库中检索时使用 Group by 和 Sum 函数将所有标记、outOff 和权重相加。
但是,这给出的百分比与我预期的不同。所以我需要逐行做。
所以我必须把每一行加起来,然后从 English101 中取出所有行,然后把它们的重量加起来。
但我不知道如何做到这一点。我尝试使用字典并使用 courseName 作为键,然后检查下一行是否具有相同的 courseName。然后我会从该字典中提取当前值并将其添加到其中。
但我只完成了一半,我有 1 个 foreach 循环和 3 个嵌套 if 语句。
所以应该有更好的办法。
我正在使用 linq to sql。当它来自数据库时,我不确定我是否可以使用它来完成所有这些工作。
【问题讨论】:
-
"(30 / 50) * 10 = 6" 你确定吗?
-
哎呀,不应该这么早看问题:(
标签: .net asp.net linq linq-to-sql