2011-01-04 10 views
6

के साथ वाक्यविन्यास में कैसे करूं मुझे लिनक चेनिंग सिंटैक्स का उपयोग करके ऐसा करने की आवश्यकता है। मेरे पास है:मैं लिंक

string[] arr = new string[] {"Chicago", "NewYork"}; 

var a = Members.Where(x => x.City == <here I want to get all members in chicago or newyork) 

उत्तर

7

आप एक साधारण Contains का उपयोग कर सकते हैं।

var a = Members.Where(x => arr.Contains(x.City)); 
+0

अगर मुझे जॉइन सिंटैक्स या आईएन सिंटैक्स का उपयोग करना पड़ा, तो मैं इसे कैसे करूं (हालांकि आपका उत्तर आकर्षण की तरह काम करता है) – DotnetDude

+0

@ डॉटनेट, आपका क्या मतलब है? "जॉइन या इन" - वे बहुत अलग चीजें हैं। – jjnguy

+0

क्या आपका मतलब 'इन' को 'जॉइन' मानदंड के रूप में है? – n8wrl

0

स्टेटिक एक्सटेंशन अपने LINQ के साथ अच्छी तरह से काम की जरूरत है:

// add this class to your project... 
public static class StringExtensions 
{ 
    public static bool IsIn(this string target, params string[] testValues) 
    { 
     return testValues.Contains(target); 
    } 
} 

और अब अपने मूल कोड इस तरह बदला जा सकता है:

// quick and dirty code: 
var a = Members.Where(x => x.City.IsIn("Chicago", "NewYork"); 

// less quick and dirty code: 
string[] arr = new string[] {"Chicago", "NewYork"};  
var a = Members.Where(x => x.City.IsIn(arr); 
3

मैं जानता हूँ कि यह पुराना है, लेकिन मैंने सोचा था कि इससे इस पोस्ट के नए पाठकों की मदद मिलेगी।

code4life के समान, मैं एक विस्तार विधि का उपयोग करता हूं। हालांकि, अंतर यह है कि मैं जेनेरिक का उपयोग करता हूं ताकि यह कई प्रकार के साथ काम करेगा।

आप पढ़ सकते हैं मेरी blog post ऐसा करने के तरीके, लेकिन मुख्य विचार यह है के बारे में अधिक जानकारी देखने के लिए: अपने कोड को यह विस्तार विधि जोड़ कर

:

public static bool IsIn<T>(this T source, params T[] values) 
{ 
    return values.Contains(source); 
} 

आप प्रदर्शन कर सकते हैं अपने इस तरह की खोज करें:

var a = Members.Where(x => x.City.IsIn("Chicago", "NewYork"); 

यह किसी भी प्रकार पर काम करता है (जब तक आप एक अच्छी बराबर विधि बनाते हैं)। निश्चित रूप से कोई मूल्य प्रकार।