1

使用状況データを含む MSSQL テーブルにテーブルがあります。レポートの場合、過去 10 年間の各年の最後のエントリのみを読み込む必要があります。

ID |    Hits    | GeneratedAt
 1 |     12     | 20171231 
 2 |     35     | 20161231
 3 |     5      | 20151230
 4 |     10     | 20141231

単一の linq クエリを使用してこの値を取得する方法はありますか、または複数の linq クエリを何らかの方法で組み合わせることができますか?

私が思いついたアイデアは 12 月 31 日を探すことでしたが、何らかの理由でこの日付のエントリがないという問題が発生します。代わりに、クエリは利用可能な最後の日をロードする必要があります (ID 3 のように)。

private static IQueryable<Usage> GetYearValues(IQueryable<Usage> queryable)
{
    var firstYear = DateTime.Now.AddYears(-10);

    var yInfosArray = queryable
        .Where(
            s.GeneratedAt.Year >= firstYear.Year
            && s.GeneratedAt.Month == 12
            && s.GeneratedAt.Day == 31 || s.GeneratedAt >= today
        )
        .OrderByDescending(s => s.GeneratedAt);
    return yInfosArray;
}
4

1 に答える 1