我有以下SQL语句正在经历一个表并根据数据定义选出一组结果。从该组中,我得到了该组的最高版本的单个结果。现在SQL很容易,但是到目前为止,将它转换为Linq并没有产生任何我可以使用的东西。有人能帮忙吗?如何将这个简单的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();
使用两个变量让我们来缩小这片集,我们正在寻找的能力for,然后在第二个var上使用linq查询,我们可以缩小该集合的实际版本号。
唉......每当我看到一个布尔值被检查为“真”或“假”时,我的眼睛都很疼...... – 2011-06-10 16:42:57
实际上有时它会使代码更具可读性。但在这种情况下,我同意,这似乎是多余的。 – Andrei 2011-06-10 16:45:22
我认为这是个人偏好,但通常它会告诉我编写代码的人并不真正理解布尔表达式。 – 2011-06-10 17:45:35