Csharp/C#教程:使用不存在和连接的SQL查询到LINQ语法分享


使用不存在和连接的SQL查询到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(); 

得到错误:

接线员’!’ 不能应用于’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(); 

试试这个:

 (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(); 

我认为您的原始查询很好,您只需要在where子句中添加另一对括号:

上述就是C#学习教程:使用不存在和连接的SQL查询到LINQ语法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

 (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).Any()) select lk).ToList(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1007645.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐