【发布时间】:2016-04-26 11:26:15
【问题描述】:
我有一个表,其中包含诸如 Id 作为主键和 LastMeterReadingId(引用同一表的外键)之类的列 - 类似于 Parent Meter Reading。
我想获取所有尚未使用的行,例如 Parent。我想避免当抄表是超过一个抄表的父母的情况。
我知道如何加入同一张表,但我不知道如何只选择那些还不是父记录的记录。这就是没有条件语句的查询的样子。
return (from m in uow.MeterReadingReadWriteRepository.Query()
join parent in uow.MeterReadingReadWriteRepository.Query() on m.Id equals parent.LastMeterReadingId
select new MeterReadingDto()
{
(...)
}).ToList();
您知道如何以有效的方式实现它吗?
问候。
【问题讨论】:
-
通常像这样的情况我写一个递归方法来枚举表。 Linq 只适合父子加入,但多代 LINQ 效果不佳。
-
首先我认为这违反了正常形式。因为不是抄表是否是另一个信息的子项,可以简单地通过按抄表日期排序来获得。如果您将它们链接在一起并且有人删除了链中间的记录,也会发生什么情况。在那种情况下你是不是有点搞砸了?
标签: c# sql linq unit-of-work