实体框架 SQL 查询
Posted
技术标签:
【中文标题】实体框架 SQL 查询【英文标题】:Entity FrameWork SQL Query 【发布时间】:2013-07-01 07:39:44 【问题描述】:如何从以下查询中获取总行数和记录?
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();
我正在获取记录,但不知道如何获取总行数。 任何机构都可以建议从上述查询中获取总行数和记录的最佳方法吗?
【问题讨论】:
【参考方案1】:您的代码将不起作用,因为您要返回一个合同列表和一个计数,但您试图将其仅分配给一个合同。您需要投影到一个匿名类型,或者创建一个自定义类型来投影,其中包括合同的计数和集合。
你为什么坚持使用 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();
除非您想要不带 where 子句的总行数,否则它将是:
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();
【讨论】:
@user2254395 - “得到错误”没有帮助。由于我无法访问您的实际源代码,因此我无法知道对象及其属性的真实名称。您必须弄清楚这一点,因为您可以访问代码。以上是关于实体框架 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章