2009-12-14 8 views
6

निम्नलिखित कोड का उपयोग कर दिया व्यक्त किया जा सकता है:अलग तथाकथित एम्बेडेड क्वेरी के बजाय एक विधि कॉल

string[] colors = {"red","green","blue","red","green","blue"}; 
var distinctColors = (from c in colors select c).Distinct(); 
distinctColors.Dump(); 

यह कॉल .Distinct() एम्बेडेड क्वेरी सिंटैक्स में गुना करना संभव है?

कुछ पूर्णांक T-SQL

select distinct color from TableofColors 
+2

उपयोग करने के लिए इस तरह, यह क्वेरी समझ सिंटेक्स कहा जाता है के द्वारा क्वेरी एक्सप्रेशन का उपयोग करना। – SLaks

+4

@ स्लक्स: या बस spec के सेक्शन 7.15 के अनुसार "क्वेरी एक्सप्रेशन"। –

उत्तर

8

सी # की क्वेरी अभिव्यक्ति वाक्य रचना की कोशिश शामिल नहीं है "अलग" कर सकते हैं। वीबी का करता है, लेकिन - उदाहरण के लिए, MSDN docs for VB's Distinct clause से:

// VB 
Dim customerOrders = From cust In customers, ord In orders _ 
        Where cust.CustomerID = ord.CustomerID _ 
        Select cust.CompanyName, ord.OrderDate _ 
        Distinct 

सी # बराबर स्पष्ट रूप से डॉट नोटेशन Distinct() फोन करना होगा।

हालांकि, अपने उदाहरण अभी भी सरल किया जा सकता:

string[] colors = {"red","green","blue","red","green","blue"}; 
var distinctColors = colors.Distinct(); 
distinctColors.Dump(); 

मत सोचो तुम है LINQ :)

1

क्वेरी समझ वाक्य रचना की तरह Distinct विधि का समर्थन नहीं करता।

अपने मामले में, आप बस colors.Distinct() लिख सकते हैं; आप क्वेरी अभिव्यक्ति के साथ कुछ भी नहीं कर रहे हैं।

2

जहां तक ​​मुझे पता है सी # में कोई विशिष्ट एम्बेडेड क्वेरी वाक्यविन्यास नहीं है। इस रूप में यह हो जाता है के रूप में करीब है:

var distinctColors = (from color in colors 
         select color).Distinct() 
0

आप इस

var dis = from c in colors 
    group c by c; 

foreach (var cVal in dis) 
    { 
     string s = cVal.Key; 
    } 
+0

यह एक 'आईनेमेरेबल >' वापस नहीं करेगा, 'IENumerable ' 'नहीं। – SLaks

+0

आपको सी से चुनिंदा सी। केई में सी से रंग समूह सी में से सी लिखना चाहिए। इसके अलावा, यह शायद 'विशिष्ट' से थोड़ा धीमा हो जाएगा। – SLaks

+0

स्लाक्स। क्या आपके पास धीमी गति से समूह को साबित करने वाले कोई आंकड़े अलग हैं? –

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