2009-08-12 6 views
0

Я две таблицы (1: N)перевод хранимой процедуры - к Linq2SQL (кол-, не более, группа, OrderBy)

CREATE TABLE master (idMaster int identity (1,1) not null, 
TheName varchar(100) null, 
constraint pk_master primary key(idMaster) clustered) 

и -

CREATE TABLE lnk (idSlave int not null, 
idMaster int not null, 
constraint pk_lnk_master_slave(idSlave) primary key clustered) 

Связь между Master.idMaster и lnk.idMaster

У меня есть SQL-запрос:

select max (master.idMaster) as idMaster, 
     master.theName, 
     count (lnk.idSlave) as freq 
    from lnk 
    inner join master ON lnk.idMaster = master.idMaster 
    Group by master.theName 
    order by freq desc, master.theName 

Мне нужно перевести этот запрос T-SQL в оператор Linq-to-SQL, желательно в C#

ответ

0

Вы не можете контролировать точный SQL-вывод запроса Linq-to-SQL, но это должно сделать трюк:

var results = from slave in dataContext.lnks 
        group slave by slave.idMaster 
         into slaveByMaster 
         let count = slaveByMaster.Count() 
         orderby count 
         select new 
         { 
          slaveByMaster.Key, 
          count, 
         }; 

Вам понадобится другой запрос для вычисления max (master.idMaster). Что-то вроде этого:

  var result2 = (from master in dataContext.masters 
         select master.idMaster).Max(); 

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

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