C#プロジェクトでLINQ to SQLを使用してクエリを作成していますが、いくつか問題があります...
私がやりたいのは、今日のような最後の4日間(たとえば、金曜日)を選択することです。したがって、金曜日28にいる場合は、次のクエリを実行します。金曜日21、14、7...最後4金曜日ですが、今日はそうではありません。
これは簡単ですが、これは複雑な部分です。たとえば、毎月28日から1日までの月末など、設定した例外をクエリしたくないので、これをクエリしたいとします。 (10月、金曜日):
今日は金曜日26日です。質問したいのですが。
19、12、5、9月28日(今から第4金曜日)ですが、先ほど言ったように、28日は月末なので、最後の金曜日である9月21日を返す必要があり、月末ではありません... I休日も同じ問題ですが、月末まで対応できれば、対応できると思います...
私が欲しいものを理解するためにあなたに良い説明をしたことを願っています...これが私のクエリです。これは機能していますが、例外を処理できません。(フィールドb.dayは各日のIDであり、8は月末を意味し、7は休日を意味します)
var values =
from b in dc.MyTable
where // This means end of month
b.day != 8
// This triggers to query last 4 days
&& b.date == Convert.ToDateTime(last.ToString("dd/MM/yyy")).AddDays(-28)
|| b.date == Convert.ToDateTime(last.ToString("dd/MM/yyy")).AddDays(-21)
|| b.date == Convert.ToDateTime(last.ToString("dd/MM/yyy")).AddDays(-14)
|| b.date == Convert.ToDateTime(last.ToString("dd/MM/yyy")).AddDays(-7)
orderby b.id descending
group b.valor by b.hora_id into hg
orderby hg.Key descending
select new
{
Key = hg.Key,
Max avg = System.Convert.ToInt32(hg.Average() + ((hg.Average() * intOkMas) / 100)),
Min avg = System.Convert.ToInt32(hg.Average() - ((hg.Average() * intOkMenos) / 100))
};