2013-08-10 2 views
0

다소 복잡한 상황에 직면하고 있으므로이 질문에 대한 정확한 제목을 정의하기가 어렵습니다. 나는 더 자세히 설명 할 것이니, 나와 함께 맨발로!매주 반복 되겠습니다.

저는 ORM (EntityFramework)을 사용하는 WPF 응용 프로그램을 개발 중입니다. 응용 프로그램을 사용하면 특정 작업을 계획 할 수 있습니다. 이러한 작업은 x 주마다 반복 될 수 있습니다. 예 : 2 주마다 유지 관리 Google.com (월요일부터 시작).

내가 저장 한 방법은 다음과 같습니다. 태스크가 처음 시작된 날짜 인 'StartDate'라는 필드가있는 Task 객체가 있습니다. 또한 'Recur'라는 필드를 만들었습니다 (이름이 더 좋을 수도 있음). 'Recur'필드는 특정 작업이 반복되어야하는 기간을 유지합니다. 위의 예에서 2 위를 유지하고 있습니다. Google.com의 유지 관리가 2 주마다 완료되어야하기 때문입니다.

이제 내가 직면하고있는 상황이 있습니다. 나는 사용자가 특정 weeknumber에있는 모든 작업을 검색 할 수 있기를 바랍니다. 예를 들어, 2013 년 42 주에 모든 작업 검색. 매주 반복되는 작업을 만들면 42 번째주의 모든 작업을 검색 할 때이 작업이 표시되어야한다는 것을 의미합니다. 또한 44, 46, 48 주에 대한 모든 작업을 검색 할 때 표시되어야합니다.

작업이 특정 주 번호에 속하는지 선택하려면 어떻게해야합니까? 나는 다음과 같은 노력했습니다 : '재발'주의 양이 같거나는 STARTDATE와 오늘 사이에 다른 날짜의 양보다 많은 경우 내가하려고 기본적으로 무엇을

context.Werk.Include("Debiteur").Where(o => o.Recur >= EntityFunctions.DiffDays(o.StartDate, today)/7 
                   && EntityFunctions.DiffDays(o.StartDate, today)/7 % o.Recur == 0).ToList(); 

확인합니다. 또한 '시작일'과 다른 요일과 '반복 자'입력란이 맞는지 확인했습니다.

나는 정말로이 상황에 머물러 있으며, 이것으로 나를 도와 주려는 신선한 눈과 마음이 정말로 필요합니다. 진심으로 제 문제를 분명히 밝히기를 진심으로 바랍니다.

+0

당신은 시간 범위 객체의 재발 시간을 유지해야이 –

+0

당신이 이유를 명확하게 할 수 게다가이 정말 문제가 바로 해결되지 않는 어쩌면 그것의 더 깔끔한 – Mittchel

답변

0

woukd가 더 많은 컨텍스트를 필요로하므로 특정 답변을 드릴 수 없습니다 (예 : "Werk"를 처리하는 클래스가 이미 있습니까?)). . 컬렉션은 이미 "debiteur"고 현재는) 컬렉션 '에 ONT하지만 올바른 방향을 가리킬 수 있음을 여과

이 같은 작업 클래스 만듭니다.

public class Werk 
{ 
    public bool IsRecurrungThisWeek(DateTime date) 
    { 
     // This can be implemented by yourself 
    } 

    public DateTime StartsFrom { get; set; } 
    public int Recur { get; set; } 
    public int Debiteur { get; set; } 
} 

을 그리고 할 어디 간단하다.? Queryable.Where `에서 변경

IEnumerable<Werk> list = GetWerkObjects(); 
var aDateOfTheWeek = new DateTime(); 
var werkRecurringThisWeek = list.Where(w => w.IsRecurrungThisWeek(aDateOfTheWeek)); 
+0

'to'Enumerable. 다시 '꽤 차이가 있습니다 ... –

+0

@ ta.speot.is 맞습니다. 이 솔루션은 컨텍스트에 따라 다릅니다. Ienumarable이 다음 요청에 대해 캐시 될 수 있거나 기존 클래스 (예 : 주간 계산)에 많은 로직이있는 경우 레코드 수가 매우 높지 않을 때 선호합니다. 다른 시나리오에서는 다른 솔루션을 원할 수 있습니다. –

+0

도움을 많이 주셔서 감사합니다. 이론적으로 '워커'오브젝트의 양은 무한 할 수 있습니다. 실제로 그 양은 50 이하로 유지 될 것입니다. @AlexSiepman : Werk 클래스가 있지만 이것이 내 EF 개체 (ORM)입니다. 아니요. 컬렉션이 필터링되지 않습니다. – Mittchel