【问题标题】:translate stored procedure - to Linq2SQL (count, max, group, orderby)将存储过程转换为 Linq2SQL(计数、最大值、组、排序依据)
【发布时间】:2009-08-12 21:00:01
【问题描述】:

我有两张桌子 (1:N)

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#

【问题讨论】:

    标签: linq-to-sql count group-by inner-join max


    【解决方案1】:

    您无法控制 Linq-to-SQL 查询的准确 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,
                          };
    

    您仍然需要其他查询来计算最大值(master.idMaster)。像这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2012-05-17
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多