-1

我有一个简单的测试表:

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

如果我在此表中搜索,那么我想要具有最新“起始日期”的代码。
例如,搜索“ernie”应给出以下结果:“001 / 2012-12-03 / ernie”

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

如果我搜索“er”,我应该得到 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 查询。

更新:
使问题更容易理解

4

1 回答 1

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();
于 2012-12-21T18:57:59.360 回答