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'

如果我搜索'er',我应该得到两个最新的记录:'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查询。

更新:
使问题更容易理解

这行得通:

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();

相关内容

  • 没有找到相关文章