大家。
我有以下数据。
DATE|COLUMN1|COLUMN2|VALUE -------------------------- 1 |A |D |100 -------------------------- 2 |A |D |200 -------------------------- 1 |B |D |150
我需要获取DATE确实具有最大值的行。像那样
DATE|COLUMN1|COLUMN2|VALUE -------------------------- 2 |A |D |50 -------------------------- 1 |B |D |150
抱歉我的英语不好。
答案 0 :(得分:1)
据我所知,您需要每组 column1 的最长日期 -
为此你可以用
var custsLastAccess = from c in db.data //data is your table
group c by c.COLUMN1 into grp
select grp.OrderByDescending(c => c.DATE).FirstOrDefault();
答案 1 :(得分:0)
您可以先从LINQ中选择最大值,然后选择最大值:
var max = rows.Max(a => a.DATE);
var result = rows.Where(a => a.DATE == max).ToList();
Simplier:
var result = rows.Where(a => a.DATE == rows.Max(b => b.DATE)).ToList();
优化器/编译器应该优化上面的查询。
表达式:
var result = from r in rows
where r.DATE == rows.Max(a => a.DATE)
select r;
答案 2 :(得分:0)
我找到了解决方法。以下代码决定了我的任务。
public override IQueryable<ENTITY> Get()
{
return base.Get().GroupBy(x => new { x.COLUMN1, x.COLUMN2 }, (key, group) => new
{
row = group.OrderByDescending(x => x.DATE).FirstOrDefault()
}).Select(x => x.row);
}