c# - 使用 IEnumerable 从连接中返回 IQueryable
问题描述
为了避免报告中的空白,请与数据范围进行连接。
private async Task<IEnumerable<ReportDTO>> JoinDateRangeAsync( DashboardFilter filter, IQueryable<ReportDTO> queryable ) {
if (filter is null)
return null;
if (queryable is null)
return null;
var dateRange = DateHelpers.GetDatesRanges( await this.GetFromDateFromDashbordFilterAsync( filter ), GetToDateFromDashbordFilter( filter ) );
return
from d in dateRange
join r in queryable on new { x = (short)d.DayOfYear, y = (short)d.Year } equals new { x = r.DayOfYear, y = r.Year} into dr
from r in dr.DefaultIfEmpty()
select new ReportDTO( d, r );
}
我的助手功能
public static DateTime[] GetDatesRanges( DateTime from, DateTime to ) {
return Enumerable
.Range( 0, 1 + to.Subtract( from ).Days )
.Select( offset => from.AddDays( offset ) )
.ToArray();
}
以这种方式必须返回一个 IEnumerable 的问题。出于性能原因,是否可以返回 IQueryable 类型的对象?
解决方案
推荐阅读
- android - android soong 构建系统的原生代码覆盖率
- php - SQL 查询加载速度比它说的要慢
- java - 我应该改变什么来优化替换方法?
- python - 为什么局部变量会自我更新?
- php - 将 JSON 文件导入 Laravel
- jquery - 当我们在调度程序选项中设置“selectable: true”时,调度程序获得焦点它会跳转
- opencv - opencv - 通过添加 R+G+B 将 3 个通道合并为 1 个
- anaconda - 使用 Anaconda Sphinx 创建 PDF
- javascript - ReactJS 登录页面未显示
- scala - 使用 Scio 将 SCollection 从 textFile 放入 BigQuery