2013-07-01 7 views
0

Как получить Общее количество строк & записей из нижеследующего запроса?Entity FrameWork SQL Query

Contracts cont = db.contracts.SqlQuery("SELECT TOP (20) * 
    FROM (SELECT 
      ROW_NUMBER() OVER (ORDER BY dbo.Contracts.expDate desc) As RowID, 
      dbo.Contracts.*, 
      TotalRows=COUNT(*) OVER() 
     FROM dbo.Contracts 
     Where dbo.Contracts.cancelled = 1) as temp 
    WHERE temp.RowID >" + 20).ToList(); 

Я получаю записи, но не знаю, как получить общее количество строк. Может ли любое тело предложить лучший способ получить итоговую строку Count & записи из вышеуказанного запроса?

ответ

2

Ваш код не будет работать, потому что вы возвращаете список Контрактов и счет, но вы пытаетесь назначить его только Контрактам. Вам нужно проецировать анонимный тип или создать настраиваемый тип для проекта, включающий как счет, так и коллекцию Контрактов.

Почему вы настаиваете на использовании SQL-запроса? Это должно сделать то же самое.

var contracts = (from x in db.contacts where x.cancelled == 1 
       orderby x.expDate descending 
       select new { Count=x.Count(), Records=x.Skip(20).Take(20) }).ToList(); 

Если вы не хотите, полные строки без оговорки, где в этом случае было бы:

var contracts = (from x in db.contacts orderby x.expDate descending 
       select new { Count=x.Count(), 
        Records=x.Where(y => y.canceled == 1).Skip(20).Take(20) }).ToList(); 
+0

это один получаю ошибку, я думаю, что нам нужно изменить выше .. – Mukarram

+1

@ user2254395 - " получение ошибки "не помогает. Поскольку у меня нет доступа к вашему фактическому исходному коду, я не могу знать настоящих имен объектов и их свойств .. вам придется это понять, потому что у вас есть доступ к коду. –