我想通过实体框架进行查询,该框架将两个不同表中的联系人联合起来,按日期删除重复项和订单。我遇到的问题是不同的日期使相同的联系人看起来是唯一的。我不想在不同的日期中包含日期,但之后我确实需要它来进行订购。我不能先进行排序,删除日期然后执行 distinct,因为 distinct 会改变排序。我也不能在工会之前订购,因为这并不能确保在工会之后订购。
我想区分除日期以外的所有字段,这仅在订购时需要。
理想情况下,我会将比较器传递给 distinct,但 EF 无法将其转换为 SQL。
db.Packages.Select(p => new Recent()
{
Name = p.Attention, Address1 = p.Address1, ... , Date = ShippingDate
})
.Concat(db.Letters.Select(l => new Recent()
{
Name = l.AddressedTo, Address1 = p.Address1, ..., Date = MarkedDate
})
.Distinct()
.OrderByDescending(r => r.Date);
或 SQL 中的问题
SELECT DISTINCT Attention, Address1, ShippingDate
FROM Packages
UNION ALL
SELECT AddressedTo, Address1, MarkedDate
FROM Letters
ORDER BY ShipmentDate DESC