2016-10-24 6 views
0

2つの異なるデータベースからTimeEntriesをチェックする必要があります。私達は私達の時間(LOGDB)のログどこ一致するものがない場合は、2つのテーブルのIDを確認してください

一方が他方には、それらの時間(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... 
      } 


    } 
} 

ので今まで、それはLOGDBから削除された意味を何一致がない場合にのみ、データFRA ManagerDBを削除する必要があります。

答えて

1

私はあなたのシナリオを正しく持っています。入れ子にされたforeach文の代わりにlinqを使うことができます:

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 
+0

あなたはシナリオを正しく持っていて、本当にきれいに見えます! – andrelange91

+0

完璧に動作しました^^でした。 Thxのヘルプ:D – andrelange91

関連する問題