2013-05-16 6 views
3

Я довольно новичок в запросах Linq, я просто хочу преобразовать свой запрос БД в Linq.Преобразование SQL в запрос Linq

Вот мой простой SQL-запрос:

var query = "SELECT EnrollmentDate, COUNT(*) AS StudentCount " 
      + "FROM Person " 
      + "WHERE EnrollmentDate IS NOT NULL " 
      + "GROUP BY EnrollmentDate"; 

var data = db.Database.SqlQuery<EnrollmentDateGroup>(query); 

Это работает нормально, но как это возможно, чтобы написать этот запрос в Linq, я просто не могу преобразовать group by заявление в Linq. Кажется несколько сложным преобразовать в Linq.

Может ли кто-нибудь помочь мне с этим?

ответ

10
var result = db.Person 
       .Where(r=> r.EnrollmentDate != null) 
       .GroupBy(r=> r.EnrollmentDate) 
       .Select(group=> new 
           { 
           EnrollmentDate = group.Key, 
           Count = group.Count() 
           }); 
+1

@MahmoudGamal, спасибо за Thanx редактировать – Habib

+0

для ур ответа, но я получаю сообщение об ошибке '(xyzModel.SchoolContext не содержит какой-либо Defenition для лица)' в Ques была обновлены ... PLZ увидеть его снова. thanx –

+0

@ashok_damani, что представляет собой класс, представляющий вашу таблицу 'Person' в вашей модели? Замените это в своем запросе – Habib

15
var query = from row in db.Person 
      where row.EnrollmentDate != null 
      group row by row.EnrollmentDate into grp 
      select new { 
       EnrollmentDate = grp.Key, 
       Count = grp.Count() 
      }; 
+0

Я предполагаю, что выражение запроса супер-круто: P – Habib

+0

thats cool !!! @Marc Gravell, thnx для ответа ур, но я искал Linq в выражении lamda как ответ Хабиба, но в любом случае thanx 4 быстрый ответ –

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

  • Нет связанных вопросов^_^