linq - Linq 连接表和可为空的变量
问题描述
我正在尝试使用 db.ClincalAssets 表上的连接对 Ef6 进行 LINQ 查询,其中 AssetDisposalID 字段为空
即我不希望该表中 AssetDisposalID 不为空的数据行
以下代码似乎不起作用,因为它返回与我修改代码之前相同的 23 个结果
var today = DateTime.Now.Date;
var tomorrow = today.AddDays(30);
var dateresult = db.ClinicalINSs.GroupBy(d => d.ClinicalAssetID)
.SelectMany(g => g.OrderByDescending(d => d.NextInspectionDate)
.Take(1));
var ClinicalIDVM = (from s in dateresult.Where(q => q.NextInspectionDate <= tomorrow)
join co in db.ClinicalAssets.Where (t => t.AssetDisposalID == null) on s.ClinicalAssetID equals co.ClinicalAssetID into AR
let subred = AR.OrderByDescending(subredASS => subredASS.ClinicalAssetID).FirstOrDefault()
join cp in db.ClinicalPATs on s.ClinicalAssetID equals cp.ClinicalAssetID into AP
let subpat = AP.OrderByDescending(SubPATASS => SubPATASS.ClinicalAssetID).FirstOrDefault()
orderby s.NextInspectionDate descending
select new ClinicalIDVM
{
ClinicalAssetID = s.ClinicalAssetID,
ProductName = subred.ProductName ,
SerialNo = subred.SerialNo == null ? "" : subred.SerialNo,
InspectionDate = subpat.InspectionDate,
NextInspectionDate = s.NextInspectionDate == null ? (DateTime?)null : s.NextInspectionDate,
}).ToList();
我也试过这个:
var today = DateTime.Now.Date;
var tomorrow = today.AddDays(30);
var dateresult = db.ClinicalINSs.GroupBy(d => d.ClinicalAssetID)
.SelectMany(g => g.OrderByDescending(d => d.NextInspectionDate)
.Take(1));
var ClinicalIDVM = (from s in dateresult from Disp in db.ClinicalAssets where s.NextInspectionDate <= tomorrow && Disp.AssetDisposalID == null
join co in db.ClinicalAssets on s.ClinicalAssetID equals co.ClinicalAssetID into AR
let subred = AR.OrderByDescending(subredASS => subredASS.ClinicalAssetID).FirstOrDefault()
join cp in db.ClinicalPATs on s.ClinicalAssetID equals cp.ClinicalAssetID into AP
let subpat = AP.OrderByDescending(SubPATASS => SubPATASS.ClinicalAssetID).FirstOrDefault()
orderby s.NextInspectionDate descending
select new ClinicalIDVM
{
ClinicalAssetID = s.ClinicalAssetID,
ProductName = subred.ProductName ,
SerialNo = subred.SerialNo == null ? "" : subred.SerialNo,
InspectionDate = subpat.InspectionDate,
NextInspectionDate = s.NextInspectionDate == null ? (DateTime?)null : s.NextInspectionDate,
}).ToList();
但我得到了重复的记录。
解决方案
推荐阅读
- javascript - 输入时间增加 30 分钟
- javascript - 如何检查数组中是否存在特定的对象元素(不是属性)?
- c# - 访问有关统一游戏对象的自定义属性
- sql-server - 删除主键但保留外键?
- python - Seaborn 需要几分钟才能从一组图像中创建像素方差的热图
- android - 如何在 Kotlin 中声明变量?我收到“未解决的参考”
- angular - 隐藏 url 参数有什么安全优势吗
- python - 开发我自己的太空入侵者版本。我正在尝试找到一种方法来循环我的开火按钮,以便在按住时每 0.5 秒开火一次
- variables - 如何使用变量来避免为工作表中的所有列创建一组变量?
- html - 有没有办法在 qml 文本中使用多种字体大小进行垂直排序?