我正试图围绕LINQ查询的正确语法或一个lambda表达式,它返回与以下SQL查询等价的内容:
SELECT *
FROM tool t
WHERE t.UniqTool
NOT IN (SELECT t1.uniqtool
FROM tool t1
INNER JOIN [version] v ON v.UniqTool = t1.UniqTool
AND v.IsBetaVersion = 1)
基本上,我想获得尚未提供测试版的工具列表。我有一个工具对象,它同时包含UniqTool(ID值)和一个布尔属性,指示该版本是否为beta。
这是我最初的尝试:
var tools = from t in session.CachedTools where !t.IsBetaVersion select t;
我意识到它给了我错误的结果集,并且我试图找出带有NOT IN逻辑的子查询。
谢谢!
答案 0 :(得分:3)
假设您的Tool
实体上有导航属性,此查询应该会为您提供所有没有任何测试版本的工具:
var tools = session.CachedTools.Where(t => !t.Versions.Any(v => v.IsBetaVersion == 1));