2016-03-31 5 views
7

मेरे 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 वाक्यविन्यास मैं

की कोशिश की जरूरत है का उपयोग कर 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'

कोई सुराग जहां मैंने गलती की?

उत्तर

1

आप इस तरह की कोशिश कर सकते हैं:

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

के रूप में मानों को यह पहला उदाहरण 'फर्स्टऑर्डडिफॉल्ट() == नल' और –

+0

प्राप्त करने में विपरीत तर्क होना चाहिए - एक क्वेरी बॉडी को एक चुनिंदा क्लॉज या समूह क्लॉज – Neo

+0

के साथ समाप्त होना चाहिए मेरे संपादन की जांच करें @Neo –

1

इस प्रयास करें:

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

अंतर्निहित रूप से प्रकार 'int' से 'bool' को परिवर्तित नहीं कर सकता – Neo

+0

मुझे लगता है कि समस्या है कि मैं वैरिएबल के अंदर टेबल मान ले रहा हूं, यह गलत क्यों हो सकता है? कोई सुराग ? मुझे सभी स्थानीयकरण मिल रहा है, आउटपुट – Neo

1

मुझे लगता है कि आपकी मूल क्वेरी ठीक है तुम बस का एक और जोड़ी जोड़ने की जरूरत जहां खंड में ब्रैकेट:

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

मुझे लगता है कि मुद्दा है कि मैं वैर वेरिएबल के अंदर टेबल वैल्यू ले रहा हूं, यह गलत क्यों हो सकता है? कोई सुराग? मुझे सभी स्थानीयकरण मिल रहा है आउटपुट के रूप में मूल्य – Neo

+0

तो शायद सबसे अधिक समस्या आपके साथ है एसक्यूएल क्वेरी। मुझे लगता है कि यह एक ही परिणाम देता है –

संबंधित मुद्दे