程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了无法翻译具有可为空值的 Linq 语句大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决无法翻译具有可为空值的 Linq 语句?

开发过程中遇到无法翻译具有可为空值的 Linq 语句的问题如何解决?下面主要结合日常开发的经验,给出你关于无法翻译具有可为空值的 Linq 语句的解决方法建议,希望对你解决无法翻译具有可为空值的 Linq 语句有所启发或帮助;

我正在尝试查询 SQLite 数据库。我有 2 个表 DoctorAppointmentAppointment 表有 2 列可以为空,Date(类型 datetiR_733_11845@e)和 Durata(类型 TimeSpan)表示约会的持续时间。

var date = datetiR_733_11845@e.Parse(request.DatE);

var filteredDoctors = await _co@R_618_10443@t.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.@R_293_10586@lminutes))))
                        .ToListAsync(cancellationToken);

此查询无需最后一个“&&”

&& date <= System.Data.Entity.DbFunctions.Addminutes(a.Date.Value,(int)a.Durata.Value.@R_293_10586@lminutes)

表达式 a.Date.Value.Add(a.Durata.value) 不起作用。我尝试了在 stackoverflow 上找到的大多数解决方案,这是我来到的最后一个版本。是否还有其他方法可以使此查询正常工作?

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

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

更新 2: 更新查询以包含 System.Data.Entity.DbFunctions.Diffminutes()

var filteredDoctors = await _co@R_618_10443@t.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();

解决方法

好的,基于 Durata 是约会期间的时间跨度,以下应该有效:

date <= DbFunctions.Addminutes(a.Date.Value,DbFunctions.Diffminutes(TimeSpan.Zero,a.Durata.value))

大佬总结

以上是大佬教程为你收集整理的无法翻译具有可为空值的 Linq 语句全部内容,希望文章能够帮你解决无法翻译具有可为空值的 Linq 语句所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。