Я потратил весь день, пытаясь выяснить, как подключиться/сгруппировать мой запрос ниже, может ли кто-нибудь помочь мне или вести меня для завершения желаемого вывода? -i заключены некоторые из внешних ключевых значений для удобства)Результаты группы LINQ
Below is my Table Grade
rowID testID studentID Grade
1 1 1(class2011) 50
2 1 1(class2011) 90
3 2 1(class2011) 100
4 2 2(class2012) 85
--Student table
StudentID Classyear
1 2(class2011)
2 3(class2012)
3 1(class2010)
--Classyear Table
ClassYearID Desc
1 2010
2 2011
3 2012
Мой запрос ниже (для отображения TestID, не удалось (скорость прохождения = 80), пропущенный, принятый, Rate)
var h = list.GroupBy(a => a.testID)
.Select(a => {
int _failed = a.Count(g => g.Grade < 80);
int _passed = a.Count(g => g.Grade >= 80);
int _rate = (int)(_passed/(double)a.Count() * 100.0);
return new {
testID = a.Key,
failed = _failed,
passed = _passed,
taken = a.Count(),
rate = _rate,
};
});
The result1
testID failed passed taken Rate
1 1 1 2 50%
2 0 2 2 100%
Теперь вот моя БОЛЬШАЯ проблема: учащиеся в моем классе класса выше НЕ принадлежат к того же класса. Мне нужно сгруппировать это с помощью testID и classyear. смотрите ниже требуемого выхода:
testID ClassyearID failed passed taken Rate
1 1(2010) 0 0 0 0
1 2(2011) 1 1 2 50%
1 3(2012) 0 0 0 0
2 1(2010) 0 0 0 0
2 2(2011) 0 1 1 100%
2 3(2012) 0 1 1 100%
Вы можете сразу увидеть разницу от результата 1. Статистика для Test2 делится на класс 2011 и класс 2012
Надежда я объяснить достаточно ясно мои намерения. Возможно, я опубликую позже мой дрянной код, пытаясь получить желаемый результат. Благодаря