问题:希望选择每种类型的1行
表: EntryPrices
AttendingTypesId(int)
名称(nvarchar)
价格(国际)
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月中旬登记,他可以获得100 150年11月中旬和12月200日结束。
但是我希望根据今天的日期获得“有效”费用,我想在下拉列表中列出。
所以,如果我今天(2012-aug-02)查询这个,我应该得到以下内容 行:
基本参赛作品 - 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 };
答案 0 :(得分: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();