检查两个表中的id,如果没有匹配则将其删除

时间:2016-10-24 09:58:42

标签: c#

我需要检查来自两个不同数据库的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中删除了。

1 个答案:

答案 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