如何通过LINQ获取行

时间:2016-11-24 12:31:47

标签: linq

大家。

我有以下数据。

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

抱歉我的英语不好。

3 个答案:

答案 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);
    }