从两个表中检查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中删除了。

从两个表中检查id,如果没有匹配,则删除它

希望我没弄错。您可以使用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