SQL Query to LINQ syntax using not exist and join
You can try like this:
(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();
or
(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();
Try this:
(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();
I think your original query is fine you just need to add another pair of brackets in the where clause:
(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();