c# - 分组后Linq select语句不起作用
问题描述
我通过加入从多个表中获取数据,并且我想根据日期对数据进行分组,但是在按语句分组后,我收到一个错误,无法根据日期选择所有实体。
var query = from record in _entityRepository.GetAll().Where(x => x.DateRecord > DateTime.UtcNow.Date)
join job in _jobRepository.GetAll() on record.Id equals job.Id
into g1
from job in g1.DefaultIfEmpty()
join punchList in _punchListRepository.GetAll() on record.Id equals punchList.Id
into g2 from punchList in g2.DefaultIfEmpty()
join punchJob in _jobRepository.GetAll() on punchList != null ? -1 : punchList.JobId equals punchJob.Id
into g4 from punchJob in g4.DefaultIfEmpty()
group new {record, job, punchList, punchJob} by new{ record.DateRecord}
into g3
select new
{
Date = g3.Key,
job= g3.Select(x=>x.job),
punchList= g3.Select(x=>x.punchList)
};
而且我也在 select 语句中尝试了ToList(),但它没有用。
解决方案
试试这个:
var entityRepository=_entityRepository.GetAll().Where(x => x.DateRecord > DateTime.UtcNow.Date).ToList();
var jobRepository=_jobRepository.GetAll().ToList();;
var punchListRepository=_punchListRepository.GetAll().ToList();;
var query = from record in entityRepository
join job in jobRepository on record.Id equals job.Id into g1
from job in g1.DefaultIfEmpty()
join punchList in punchListRepository on record.Id equals punchList.Id into g2
from punchList in g2.DefaultIfEmpty()
join punchJob in jobRepository on punchList != null ? -1 : punchList.JobId equals punchJob.Id into g4
from punchJob in g4.DefaultIfEmpty()
group new {record, job, punchList, punchJob} by new{ record.DateRecord} into g3
select new
{
Date = g3.Key,
job= g3.Select(x=>x.job).ToList(),
punchList= g3.Select(x=>x.punchList).ToList()
};
推荐阅读
- git - .zshrc 中的简单多行命令函数别名
- ubuntu - 英特尔® 实感™ SDK 2.0 上的英特尔实感 D435i 帧丢失
- javascript - 通过和 IF 语句(A-Frame 动画混合器)调用动画的正确方法?
- django - 如何解决此问题:没有名为“multiselectfield”的模块?
- vue.js - 在 Visual Studio 2019 中运行 vue.js Web 应用程序时生成错误
- python - 如何将数据发送到 python 文件中的 pyspark 表单?
- java - 如何对这个 doFilter() 方法进行单元测试?
- css - 如何为圆形边框添加渐变?
- java - 为什么 spring boot 会返回一些值为 null 的 json?
- sql - ORA:01821: 插入记录时无法识别日期格式