从两个表中检查id,如果没有匹配,则删除它
本文关键字:如果没有 删除 id 检查 两个 | 更新日期: 2023-09-27 18:14:29
我需要检查来自两个不同数据库的TimeEntries。
一个是我们记录时间的地方(LogDB),另一个是用于管理这些时间(ManagerDB)。
因此,如果timeEntry从我们记录工时的地方删除,那么它也需要从我们的管理器中删除。
但是我怎么检查呢?
在这里我得到我的数据: ManagerDB:
// get TimeEntries from ManagerDB, add timespan of 10 years.
var DBTimeEntries = GetTimeEntriesFromDB(new TimeSpan(3650, 0, 0, 0));
(返回ID的列表) LogDB
// get TimeEntries from LogDB, add timespan of 10 years.
var TickTimeEntries = GetTickTimeEntries<TimeEntry>(new TimeSpan(3650, 0, 0, 0)).Select(x=> x.id);
(返回ID的列表)
和这里我试图检查是否没有匹配。
foreach (InternExternalId te in DBTimeEntries)
{// Manager Data:
foreach (int t in TickTimeEntries)
{// Logger data.
if (te.TickId != t)
{
delete method here...
}
}
}
它应该只删除ManagerDB中的数据,如果没有匹配的话,这意味着它已经从LogDB中删除了。
希望我没弄错。您可以使用linq来代替嵌套的foreach语句:
var idsToRemove = TickTimerEntries.Except(DBTimeEntries.Select(t => t.TickId));
// Entries that existed in LogDB but not in ManagerDB no populate idsToRemove.
// You should now delete the entries which appear in idsToRemove