-1

したがって、作業する CreatedDate しかありません。

毎日午前 12 時に実行されるスケジュールされたタスクがあり、その月の同じ日に該当するすべてのレコードを取得する必要があります (ただし、CreatedDate == DateTime.Now の場合はそうではありません)。

これはデータベース呼び出しであるため、これを LINQ にすることをお勧めしますが、反復ロジックで十分だと思います。

私は今これを持っていますが、これには28日を超える日の問題があります:

var results = Context.Subscriptions.Where(
                x => !(x.StartDate.Day == DateTime.Now.Day &&
                      x.StartDate.Month == DateTime.Now.Month &&
                      x.StartDate.Year == DateTime.Now.Year) && 
                     x.StartDate.Day == DateTime.Now.Day);

明確にするために質問を更新します。

たとえば、レコードの作成日は 2013 年 1 月 31 日です。このレコードは毎月取得する必要があります。しかし、すべての月に 31 日があるわけではないため、上記のコードはそれらの月には機能しません。その月に 31 日がない場合でも、毎月レコードをプルする必要があります。

4

1 に答える 1

0

スケジュールされたタスクの実行にWindowsサービスを利用できるかもしれませんが、.netには別の方法のタスクスケジューラがあります。Windows サービスを使用する場合は、タイマー クラスを使用して繰り返し実行できます。また、タスクのテーブルがある場合は、intervaldatetime、datelastrundatetime、および nextjobdatetime の列を作成できます。ここで、実行される時間間隔を確認し、ジョブ/タスクが実行されるか実行されない日時を確認できます。

詳細については、これを確認してください: http://msdn.microsoft.com/en-us/magazine/cc163821.aspx

お役に立てば幸いです。

于 2013-09-06T03:04:08.977 に答える