0

問題:各タイプの1行を選択しようとしています

表: EntryPrices

AttendingTypesId(int)

名前(nvarchar)

価格(int)

GroupId(int)

FromDate(DateTime)// yyyy-MM-dd

サンプル: 基本エントリ-100-1 --2012-08-01

スポンサーエントリー-350-2-2012-08-01

スタッフエントリー-70-3-2012-08-01

基本エントリー-150-1-2012-10-01

基本エントリー-200-1-2012-12-01

ご覧のとおり、3つの基本的なエントリがあります。それぞれは、登録した日付に応じて有効です。したがって、9月中旬に登録すると、11月150日半ばに100で、12月200日に終了します。

ただし、今日の日付に応じて「有効な」料金を取得したいので、それをドロップダウンリストにリストします。

したがって、今日(2012年8月2日)これをクエリすると、次の行が表示されます。

基本エントリー-100-1-2012-08-01

スポンサーエントリー-350-2-2012-08-01

スタッフエントリー-70-3-2012-08-01

これをクエリすると(2012-dec-20)、次の行が表示されます。

スポンサーエントリー-350-2-2012-08-01

スタッフエントリー-70-3-2012-08-01

基本エントリー-200-1-2012-12-01

linq-to-sqlでこれを構築するにはどうすればよいですか?

私のアイデアは次のようなものでした。

var f = from data in mc.AttendingTypes
                    where DateTime.Now.CompareTo(data.FromDate) > 0
                    group data by new { data.GroupId, data.Name, data.Price, data.AttendingTypesId }
                    into newData
                    select new { newData.Key.Name, newData.Key.Price, newData.Key.AttendingTypesId };
4

1 に答える 1

0

私はむしろそのようなことをしたいです:

var today = DateTime.Now;

var result = mc.AttendingTypes
             .Where(at => at.FromDate <= today)
             .GroupBy(at => at.GroupId)
             .Select(g => g.OrderByDescending(m => m.FromDate).FirstOrDefault())
             .ToList();
于 2012-08-02T15:44:39.743 に答える