2010-08-19 14 views
89

मेरे पास इस तरह की एक सूची है:LINQ के साथ मैं अद्वितीय कैसे चुन सकता हूं?

Red 
Red 
Brown 
Yellow 
Green 
Green 
Brown 
Red 
Orange 

मैं LINQ के साथ एक विशिष्ट अद्वितीय करने की कोशिश कर रहा हूं, यानी मैं

Red 
Brown 
Yellow 
Green 
Orange 

var uniqueColors = from dbo in database.MainTable 
        where dbo.Property == true 
        select dbo.Color.Name; 

चाहता हूं, फिर मैंने इसे

var uniqueColors = from dbo in database.MainTable 
        where dbo.Property == true 
        select dbo.Color.Name.Distinct(); 

में बदल दिया सफलता। पहले select को सभी रंग मिलते हैं, तो मैं केवल अद्वितीय मान प्राप्त करने के लिए इसे कैसे संशोधित करूं?

यदि इस क्वेरी को संरचित करने का एक बेहतर तरीका है, तो उस मार्ग पर जाने से खुश।

मैं इसे संपादित करने के बारे में कैसे जा सकता हूं, इसलिए मेरे पास हो सकता है। OderBy ("कॉलम नाम") यानी रंग नाम से वर्णानुक्रम से, इसलिए संपत्ति का नाम दें?

मुझे एक संदेश मिल रहा है:

प्रकार तर्कों को उपयोग से अनुमानित नहीं किया जा सकता है। प्रकार तर्कों को स्पष्ट रूप से निर्दिष्ट करने का प्रयास करें।

उत्तर

148

अलग() गंदगी आदेश करने जा रहा है, तो आप उस के बाद छंटाई करना होगा ।

var uniqueColors = 
       (from dbo in database.MainTable 
       where dbo.Property == true 
       select dbo.Color.Name).Distinct().OrderBy(name=>name); 
+3

धन्यवाद, यह सही जवाब है। क्या कोई कृपया बता सकता है कि OrderBy() पैरामीटर में क्या होता है। आपके पास नाम => नाम है। क्या वह नाम डीबी में कॉलम नाम से आ रहा है? क्योंकि हमारे पास 'dbo.color.Name' है तो बस 'name => name' जो मुझे संकेत देता है कि यह कॉलम नाम नहीं है? विचित्र यह भी ठीक तरह से ठीक है अगर मैं इसे 'ओडरबी (ए => ए)' – baron

+3

में बदलता हूं तो चर का नाम अप्रासंगिक है। यह सिर्फ {ऑब्जेक्ट फ़ंक्शन में पारित किया गया है} => {ऑब्जेक्ट सॉर्ट करने के लिए उपयोग किया जाता है}। चूंकि हमने पहले ही चयन किया है, संग्रह में एकमात्र चीज सॉर्ट की जा रही है। –

+0

धन्यवाद @ जेम्ससुरन, आपके समाधान ने मुझे बहुत मदद की। – Ron

19
var uniqueColors = (from dbo in database.MainTable 
        where dbo.Property == true 
        select dbo.Color.Name).Distinct(); 
+2

+1 लेकिन मैं सुझाव है कि आप अपने कोड –

10

क्वेरी समझ वाक्य रचना का उपयोग करते हुए इस प्रकार आप orderby प्राप्त कर सकते थे:

var uniqueColors = (from dbo in database.MainTable 
        where dbo.Property 
        orderby dbo.Color.Name ascending 
        select dbo.Color.Name).Distinct(); 
+0

हम्म ... कि एक अक्षरात्मक तरह प्राप्त नहीं किया है के लिए एक कोड ब्लॉक का उपयोग करें - किसी कारण से ... मैं आरोही और अवरोही बंद और एक ही परिणाम मिला। क्या यह अलग बयान प्रभावित करता है? शायद उसके बाद आदेश दिया जाना चाहिए? – baron

+0

में परिणाम से वर uniqueColors = कोशिश कर सके .Distinct() orderby परिणाम आरोही (database.MainTable में dbo जहां dbo.Property चयन dbo.Color.Name से); – cordialgerm

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

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