Конвертировать SQL в Linqe - PullRequest
0 голосов
/ 14 октября 2019

Может кто-нибудь помочь преобразовать следующее в запрос LINQ To SQL?

select e.date,e.StudentId, sum(q.Value)[sumation]

from [dbo].[EvaluationResults] e,[dbo].[QuestionsDetails] q

where e.QuestionsDetailsId=q.Id and e.StudentId=9
group by e.StudentId , e.Date

1 Ответ

0 голосов
/ 14 октября 2019

Запрос, который вам нужно будет создать, будет довольно сложным из-за объединения и группировки. Поскольку linq может оказаться довольно глупым в таких ситуациях, я попробую.

Это не решит проблему полностью - вам придется заменить ее в исходном контексте данных и, возможно,необходимо переделать некоторые биты запроса на основе ваших типов данных.

var results = // This section maps to the FROM part of SQL
              from result in _db.EvaluationResults
              join detail in _db.QuestionDetails
                on result.QuestionDetailsId equals detail.Id
              // This section maps to the WHERE part of SQL
              where result.StudentId == 9
              // Since variable scoping is difficult for grouping,
              // you need to specify an intermediate select object
              // before grouping. It needs to contain everything
              // that is included in grouping or selection.
              select new
              {
                  result.StudentId,
                  result.Date,
                  detail.Value
              } into intermediate
              // This section maps to the GROUP BY part of SQL
              group intermediate by new
              {
                  intermediate.StudentId,
                  intermediate.Date
              } into grouped
              // This section maps to the SELECT part of SQL
              select new
              {
                  grouped.Key.StudentId,
                  grouped.Key.Date,
                  Summation = grouped.Sum(a => a.Value)
              };
...