【发布时间】:2019-01-22 13:41:07
【问题描述】:
我的桌子是:
id | globalId | taskStatus |
1 | 10 | New |
2 | 11 | New |
3 | 10 | InProgress |
4 | 12 | New |
我想要一个 linq 查询,它返回第 2 行的结果。
签入查询的条件
- 如果任何记录的任务状态为 InProgress,想要忽略那些具有相同 globalId 的记录。因此,在这种情况下,作为 1、3 的记录具有相同的全局 id 10,但 id 为 3 的记录的任务状态是 InProgress,因此不想要这两条记录中的任何一条。
- 也是条件 ID
我已尝试以下查询
var result = (from meetings in db.Meetings
join taskStatus in db.TaskStatus on meeting.TaskStatusId equals taskStatus.TaskStatusId
where (taskStatus.Name == InternalTaskStatus.New || taskStatus.Name == InternalTaskStatus.ToBePlannedInFuture || taskStatus.Name == InternalTaskStatus.Failed)
&& meeting.CalendarEvent != CalendarEvents.Delete
&& meeting.StartDateTime >= planningPeriodStartDate && meeting.EndDateTime <= planningPeriodEndDate
group meeting by meeting.GlobalAppointmentId into m
select new
{
MeetingResult = m.FirstOrDefault()
}).FirstOrDefault();
在上面的查询中,我添加了任务状态检查,只需要 taskStatus-New、Failed、ToBePlannedInFuture 的记录。但是在这种情况下,根据上表,我得到了错误的结果,我得到了 id 为 1 的结果。
【问题讨论】:
-
@HimBromBeere 请检查我尝试过的查询