【发布时间】:2021-11-16 07:20:58
【问题描述】:
我有一个查询,它基于连接(与此问题无关)获取对象列表,并筛选创建日期是否在过去 60 天内。这是有效的。我想做的是:
- 在没有 createdDate where 子句的情况下知道查询中有多少对象,并返回
ResultObjWITH the createdDate where 子句的列表。返回对象在我看来更像这样:
public class QueryResult
{
public long TotalPossibleCount {get; set;}
public List<ResultObj> Results {get; set;}
}
IQueryable<ResultObj> res =
from tA in ctx.TableA
join tB in ctx.TableB on tA.Id equals tb.CustId
where tA.Id == 12345 &&
tB.CreatedDate >= DateTime.Now.AddDays(-60)
select new ResultObj
{
// some object properties
};
return await res.OrderByDescending(x => x.CreatedDate).ToListAsync();
这可以在一个查询中完成吗?如果我没有 tb.CreatedDate >= ... 加上它的数据对象列表,请计算所有可能的数量?
【问题讨论】:
-
完成这项工作需要大量人为的 SQL 代码。请记住,SQL 始终只返回一个平面结果集,这意味着 每一 行必须包含一个具有计数值的列,每行的值相同。这是对空间(带宽)的浪费,而且通常不值得在资源管理方面付出努力。 Tl;dr 使用两个查询。
-
我就是这么想的,但希望以另一种方式更有效。
标签: linq entity-framework-core linq-to-sql