2016-10-24 4 views
0

두 개의 다른 데이터베이스에서 TimeEntries를 점검해야합니다. 우리는 우리의 시간 (를 logDb)를 기록 곳일치하는 것이없는 경우 두 테이블의 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의의 목록을)

여기 일치하는 항목이 없는지 확인하려고합니다. 이를 logDb에서 삭제 된 의미, 무엇을 그렇게도 일치가없는 경우

foreach (InternExternalId te in DBTimeEntries) 
{// Manager Data: 
    foreach (int t in TickTimeEntries) 
    {// Logger data. 

      if (te.TickId != t) 
      { 
       delete method here... 
      } 


    } 
} 

는 단지 데이터 훌라 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

관련 문제