2013-04-22 2 views
6

मैं देश डेटाबेस पसंद करती हैसूची में "युक्त" का उपयोग कैसे करें?

Country 
------- 
England 
Germany 
Italy 
... 

मैं के रूप में इस डेटा स्रोत मिलता है,

DB.Countries.ToList(); 

मुझे क्या करना चाहते हैं की जाँच करने के लिए नए जोड़े गए देश पहले से ही है है या नहीं,
सिर्फ पसंद करती है, ,

if(DB.Countries.ToList().Contains(newAddedCountry)) 
{ 
.............. 
} 

लेकिन मैं कैसे newAddedCountry (स्ट्रिंग) System.Collections.Generic.List<Country> कन्वर्ट करने के लिए पता नहीं है।

+0

तालिका संरचना – Satpal

+3

प्रदान करें नोट करें कि 'ToList' अंतिम स्थितिमेन होना चाहिए क्योंकि यह क्वेरी को स्मृति में लोड करता है। लाखों अभिलेखों के साथ एक टेबल पर विचार करें, इससे पहले कि आप फ़िल्टरिंग या ऑर्डर करना शुरू कर दें, आप सभी को स्मृति में लोड करेंगे। पहले से ही rdbms द्वारा अनुकूलित किया जा सकता है। –

उत्तर

14
if(DB.Countries.Any(c => c.Country == newAddedCountry)) 
{ 
    // exists .. 
} 
+5

धन्यवाद आप बहुत बहन :) – zey

6

आप Enumerable.Any विधि का उपयोग कर सकते हैं;

निर्धारित करता है कि अनुक्रम में कोई तत्व है या नहीं।

if(DB.Countries.Any(n => n.Country == newAddedCountry)) 
+0

@Downvoters टिप्पणी करने की देखभाल करते हैं? –

2

आप Country कक्षा में अपनी संपत्ति के खिलाफ देश का नाम तुलना कर सकते हैं। कुछ की तरह:

if(DB.Countries.ToList().Any(r=> r.Name == newAddedCountry)) 
           ^^^^^^ 
           Field/Property name holding the Name of Country 

आप तो तुलना करने के लिए स्ट्रिंग अनदेखी मामले चाहते हैं:

if(DB.Countries.ToList() 
       .Any(r=> r.Name.Equals(newAddedCountry, StringComparison.InvariantCultureIgnoreCase)) 
4

इस

if(DB.Countries.Any(c => c.CountryName == newAddedCountry.CountryName)) 
{ 
    // exists .. 
} 
1

की तरह कुछ की कोशिश करो यह शायद सिर्फ अपने Country वर्ग के एक संपत्ति उपयोग करना आसान हो इसके बजाए, ऐसा:

if (db.Countries.Select(x => x.Name).ToList().Contains(countryName)) 
{ 
    ... 
} 

या

if (db.Countries.Any(x => x.Name == countryName)) 
{ 
    ... 
} 

जो अधिक सक्षम है।

1

मान लिया जाये कि Country स्तंभ नाम के रूप में:

if(DB.Countries.ToList().Any(c => c.Country == newAddedCountry)) 
{ 
    //Do something 
} 
0

यदि मैं यह सही याद है, का उपयोग करता है शामिल उदाहरणों तुलना करने के लिए विधि के बराबर है। तो आपको अपने देश वर्ग में एक समान ओवरराइड विधि को लागू करने की आवश्यकता होगी। और किसी भी तरह से - आप स्ट्रिंग और देश ऑब्जेक्ट इंस्टेंस की तुलना करने की कोशिश कर रहे हैं, इसलिए उन्हें ठीक से तुलना नहीं की जा सकती है। अगर यह सिर्फ एक सूची है

List<Country> countries = DB.Countries.ToList(); 
if (countries.Any(x => x.column == newAddedCountry)) { 
    ... 
} 

या x == newAddedCountry:

मैं LINQ समाधान के लिए जाने का प्रयास होगा।

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