首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带可空值的Linq语句无法翻译

带可空值的Linq语句无法翻译
EN

Stack Overflow用户
提问于 2021-06-17 19:55:42
回答 1查看 116关注 0票数 0

我正在尝试查询一个SQLite数据库。我有两个桌子DoctorAppointmentAppointment表有两个可以为null的列,Date (类型DateTime)和Durata (类型TimeSpan),它们表示约会的持续时间。

代码语言:javascript
运行
复制
var date = DateTime.Parse(request.Date);

var filteredDoctors = await _context.Doctors
                                    .Where(d => d.Specializare == request.Speciality)
                                    .Include(d => d.Appointments)
                                    .Where(x => x.Appointments.Any(a => (a.Date != null && a.Date.Value.Date == date.Date) &&
                    (a.Date != null &&  date >= a.Date.Value) &&
                    ((a.Date != null && a.Durata != null) && date <= System.Data.Entity.DbFunctions.AddMinutes(a.Date.Value, (int)a.Durata.Value.TotalMinutes))))
                        .ToListAsync(cancellationToken);

此查询不使用最后一个"&&“

代码语言:javascript
运行
复制
&& date <= System.Data.Entity.DbFunctions.AddMinutes(a.Date.Value, (int)a.Durata.Value.TotalMinutes)

表达式a.Date.Value.Add(a.Durata.Value)不起作用。我尝试了在堆栈溢出中找到的大多数解决方案,这是我最后一个版本。为了使这个查询工作,还有什么可以做的吗?

为了简化查询,我希望选择在指定的date上不忙的所有医生

更新:错误似乎出现在System.Data.Entity.DbFunctions.AddMinutes()方法中

更新2:包含System.Data.Entity.DbFunctions.DiffMinutes()的更新查询

代码语言:javascript
运行
复制
var filteredDoctors = await _context.Doctors
                                    .Where(d => d.Specializare == request.Speciality)
                                    .Include(d => d.Appointments)
                                    .Where(x => !x.Appointments.Any(a => (a.Date != null && a.Date.Value.Date == date.Date) &&
                            (a.Date != null &&  date >= a.Date.Value) &&
                            (a.Date != null && a.Durata != null) && 
                            date <= System.Data.Entity.DbFunctions.AddMinutes(
                            a.Date.Value, System.Data.Entity.DbFunctions.DiffMinutes(TimeSpan.Zero, a.Durata.Value))))
                                     .ToListAsync();
EN

回答 1

Stack Overflow用户

发布于 2021-06-17 22:21:44

好的,基于杜拉塔是一名在任命期间的时间点,以下内容应该有效:

代码语言:javascript
运行
复制
date <= DbFunctions.AddMinutes(a.Date.Value, 
  DbFunctions.DiffMinutes(TimeSpan.Zero, a.Durata.Value))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68025797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档