我需要检查来自两个不同数据库的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...
}
}
}
它应该只删除数据fra ManagerDB,如果没有匹配,那就意味着它已经从LogDB中删除了。
答案 0 :(得分:1)
希望我的方案正确。您可以使用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