2012-02-13 2 views
1

мне предложили от друга следующий кодLinq к SQL простой SUM

вар TMP = от allCourses в _db.tblCourseNeededHours OrderBy allCourses.tblCourse.CourseName где allCourses.Semester == семестровых выберите allCourses;

return tmp.Sum (x => x.NeededHoursPerWeek);

но я receving этой ошибки

Не может неявно преобразовать тип «двойным» на «System.Linq.IQueryable

Любой идею, как это исправить?

enter image description here

общественного IQueryable FindSumAllCourseNeededHoursInSemester (строка семестр)

+0

Основываясь на ваших обновлений, я не знаю, почему вы должны использовать группировку. Если каждая из первых двух строк в вашей таблице HTML представляет запись в вашей таблице базы данных, я не вижу причин для группировки. Кажется, вам просто нужна сумма всего в этой таблице. –

ответ

2

Крис является правильным, если вы хотите полную сумму, если вы хотите его по имени, конечно, использовать GroupBy:

var hours = FindAllCourseNeededHoursInSemester(mySemester) 
    .GroupBy(g => g.CourseName) 
    .Select(c => new { c.Key, c.Sum(a => a.NeededHours) }); 
+0

Пожалуйста, проверьте изменения, которые я сделал – Jawad

+0

. Каков тип возврата вашего метода, который имеет строку return tmp.Sum (x => x.NeededHoursPerWeek); ? – DamienG

+0

Я сделал некоторые изменения выше, и диспетчер выглядит как этот общедоступный индекс ActionResult (строковый семестр) – Jawad

5

Как об этом:

var sum = FindAllCourseNeededHoursInSemester(mySemester).Sum(course => course.NeededHours) 

В этой статье MSDN имеет хорошую грунтовку на некоторых общих задач LINQ:

http://code.msdn.microsoft.com/windowsdesktop/101-LINQ-Samples-3fb9811b

+0

Я предполагаю, что сумма запрашивается в указанном выше запросе для каждого курса, а не как совершенно отдельный расчет. – Chris

+0

@ Крис: Я согласен, что есть какая-то двусмысленность. Я немного смущен тем, что действительно представляет его таблица. Мне кажется странным, что в таблице о курсах есть поле под названием «NeededHours». Похоже, что понятие «потребность» в течение нескольких часов будет более применимо к студенту или области обучения, чем к самому курсу. –

+0

Неоднозначность здесь раздражает. И я предположил, что «needHours» - это сколько часов курс длился (так, сколько часов вам нужно для прохождения курса). это предположение. ;-) Это напомнило мне, почему хорошие имена переменных/полей так важны для того, чтобы сделать ваш код самодокументированным. :) – Chris

Смежные вопросы