c# - 使用不存在和连接的 SQL 查询到 LINQ 语法

标签 c# sql-server linq

我的 SQL 查询如下所示,在 SQL 中运行良好 我需要将其转换为 LINQ 语法

SQL-

SELECT [Key], Id
FROM LocalizationKeys AS lk
WHERE NOT EXISTS (SELECT 1
                  FROM Languages AS l
                  JOIN LocalizationValues AS lv ON l.Id = lv.LanguageId
                  WHERE l.Title = 'en-US' AND lv.LocalizationKeyId = lk.Id)

我试过的 LINQ 语法

var result = 

(from lk in localizationKey    
where !(from l in lang
        join lv in localizationValue on l.Id equals lv.LanguageId
        where l.Title == "en-US" && lv.LocalizationKeyId == lk.Id select 1).FirstOrDefault()   

 select lk).ToList();

获取错误:

Operator '!' cannot be applied to operand of type 'int'

有什么地方出错了吗?

最佳答案

你可以这样尝试:

(from lk in localizationKey    
where (from l in lang
        join lv in localizationValue on l.Id equals lv.LanguageId
        where (l.Title == "en-US" && lv.LocalizationKeyId == lk.Id)   
       select l).FirstOrDefault() == null
 select lk).ToList();

(from lk in localizationKey    
where !(from l in lang
        join lv in localizationValue on l.Id equals lv.LanguageId
        where !(l.Title == "en-US" && lv.LocalizationKeyId == lk.Id) 
        select l).FirstOrDefault().Any()
 select lk).ToList();

关于c# - 使用不存在和连接的 SQL 查询到 LINQ 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36326800/

相关文章:

c# - 在 Razor Helper 中使用 @section

c# - MVC 3 WebGrid.Table 页脚参数

c# - 如何利用 FTP 任务来捕获它下载的文件的名称?

sql - 使用sql触发器获取当前用户

sql - LINQ 翻译没有给出与我的 SQL 查询相同的结果

C# 相当于 VB 中的 { }.Contains()

sql - 将 SQL Server 数据库转换为本地 C# 数据库

sql-server - 在 SQL Server 中,使用 .modify() XQuery 删除节点需要 38 分钟才能执行

c# - 使用 DbContext 进行延迟加载

c# - 我可以更好地重写此 LINQ to XML 吗?