2013-06-17 5 views
7

मैं आश्चर्य कर रहा हूँ कोई जानता है कि कैसे इकाई की रूपरेखा में व्यक्त करने के लिए क्या यह शुद्ध एसक्यूएल में होगा:इकाई की रूपरेखा OrderBy "मामला है जब"

SELECT Name, IsEmployee, IsQualityNetwork 
FROM Person 
ORDER BY CASE WHEN IsQualityNetwork = 1 or IsEmployee = 1 THEN 0 ELSE 1 END, Name 

मैं Linq गतिशील उपयोग करने की कोशिश, लेकिन जब यह कोड निष्पादित होने

var p = ctx.People 
    .OrderBy("CASE WHEN IsQualityNetwork = 1 or IsEmployee = 1 THEN 0 ELSE 1 END") 
    .OrderBy(e => e.Name); 

मैं अपवाद:

उत्तर

6
var p = ctx.People.OrderBy(p => (p.IsQualityNetwork == 1 || p.IsEmployee == 1) ? 0 : 1) 
        .ThenBy(p => p.Name); 
1

यहाँ LINQ करने के लिए अपने एसक्यूएल के एक अनुवाद है { "कोई संपत्ति या क्षेत्र 'मामला' प्रकार 'व्यक्ति' में मौजूद है"}।

var query = from p in ctx.People 
      let order = p.IsQualityNetwork || p.IsEmployee ? 0 : 1 
      orderby order, p.Name 
      select new 
      { 
       p.Name, 
       p.IsEmployee, 
       p.IsQualityNetwork, 
      } 

मैं धाराप्रवाह क्वेरी सिंटैक्स का उपयोग किया है तो मैं आप let कीवर्ड दिखा सकता है। let आपको एक रेंज वैरिएबल घोषित करने की अनुमति देता है जिसे बाद में आपकी क्वेरी में पुन: उपयोग किया जा सकता है, यह बहुत उपयोगी हो सकता है यदि आपको सशर्त मिल गया है जो कई स्थानों पर उपयोग किया जाता है, या यदि आपको कई सशर्त श्रृंखलाओं की आवश्यकता है।

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