LINQ:获取最新日期的值

时间:2012-12-21 11:06:32

标签: c# linq

我有一个简单的测试表:

Code FromDate   Name
---- ---------- -------
001  2012-11-30 bertie
001  2012-12-01 bert
002  2012-12-01 ernie
001  2012-12-02 bert
002  2012-12-02 ernie
001  2012-12-03 ernie
002  2012-12-04 bert

如果我在这张表中搜索,那么我希望代码中包含最新的'from date' 例如,搜索'ernie'应该给出结果:'001 / 2012-12-03 / ernie'

搜索'bert'应该得到结果:'002 / 2012-12-04 / bert'

如果我搜索'呃',我应该获得2条最新记录:'001 / 2012-12-03 / ernie'和'002 / 2012-12-04 / bert'

此查询无效:

from d in Data
where d.Name.ToUpper().Contains("ERNIE") && d.Code != null     
group d by d.Code into g
select g.OrderByDescending(t => t.FromDate).FirstOrDefault()

这样做的最佳方式是什么?

结果还应该为我提供每个记录没有sql查询的名称。

更新
让问题更容易理解

1 个答案:

答案 0 :(得分:0)

这有效:

var query = (from d in Data
             group d by d.Code into g
             select g.OrderByDescending(t => t.FromDate).FirstOrDefault());

query = query.Where(d => d.Name.ToUpper().Contains("BERT") && d.Code != null);

query.Dump();