【问题标题】:Sql server query to LINQ对 LINQ 的 SQL 服务器查询
【发布时间】:2015-03-16 08:51:00
【问题描述】:

我想把下面的sql查询改成linq

select top(1) CableCode 
from (SELECT top(10) (cablecode) 
      FROM Cables 
      WHERE CableCode>=20704 
      ORDER BY CableCode) as a 
order by CableCode desc

【问题讨论】:

  • 我会说在 LINQ 中它几乎相等,所以你可以尝试编写它。
  • 好的,你有什么尝试将该 sql 转换为 LINQ?

标签: sql-server asp.net-mvc linq


【解决方案1】:

您提出的查询只是为了表明它几乎相等。我把它分成了三个部分,以明确它是如何工作的

var innerQuery = (from x in db.Cables
                  where x.CableCode >= 20704
                  orderby x.CableCode
                  select x.CableCode).Take(10);

var outerQuery = (from x in innerQuery
                  orderby x descending
                  select x); // Useless: .Take(1);

int? singleElement = outerQuery.FirstOrDefault(); // Instead of TOP(1)

请注意,我直接使用FirstOrDefault(),而不是.Take(1)(相当于TOP(1))会返回IEnumerable<>

【讨论】:

    【解决方案2】:

    试试这个:-

    var result = (from c in (db.Cables.Where(x => x.CableCode >= 20704)
                                   .OrderBy(x => x.CableCode).Take(10)) 
                     orderby c.CableCode descending select c.CableCode).FirstOrDefault();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多