【发布时间】:2011-06-10 16:32:58
【问题描述】:
我有以下 SQL 语句,它正在遍历一个表并根据数据定义选择一组结果。从该组中,我得到该组修订版最高的单个结果。现在 SQL 已经很简单了,但是到目前为止,将它翻译成 Linq 并没有产生任何我可以使用的东西。有人可以帮忙吗?
select * from datasheet ds where ds.revisionnum =
(select max(revisionnum) from datasheet where datadefinitionid = 34)
and ds.isparent = 1 -- is parent will be true for this query
这是我在绊倒之前对 Linq 语句的了解:
var query = from ds in context.DataSheets
where ds.IsParent == true
&& ds.RevisionNum --- ?????
提前致谢!
代码更新
摸索了一会儿,我们想到了这个:
var dataSheet = _dataSheetRepository.All.Where(
d => d.DataDefinitionID == i.ID &&
d.IsParent == true);
var currentDataSheet = (from ds in dataSheet
where (ds.RevisionNum == (from s in dataSheet select
s.RevisionNum).Max()) select ds).SingleOrDefault();
使用两个变量使我们能够缩小我们正在寻找的工作表集合,然后使用第二个变量的 linq 查询,我们能够缩小我们想要的那个集合的实际修订号。
【问题讨论】: