2011-04-15 16 views
5

मैं विजुअल स्टूडियो में LINQ से SQL का उपयोग करके एक सरल खोज विधि बनाने की कोशिश कर रहा हूं। मेरे डेटाबेस में, मेरे पास फ़ील्ड "फर्स्टनाम" और "लास्टनाम" है, और मेरी खोज स्ट्रिंग "नाम" है। मैं एक साधारण LINQ क्वेरी कैसे बना सकता हूं जो दोनों फ़ील्ड की खोज करता है?LINQ से SQL में दो कॉलम खोजें?

सादा एसक्यूएल में मैं कुछ इस तरह करना होगा:

+2

क्या आप अब तक का प्रयास किया और क्यों यह काम नहीं किया? –

+0

मुझे नहीं पता कि लिंक में दो क्षेत्रों में कैसे शामिल होना है, इसलिए वास्तव में अभी तक कुछ भी करने की कोशिश नहीं की है। – user709712

उत्तर

18

करने के लिए हमेशा की तरह बात यह है:

var users = 
    from user in db.Users 
    where user.FirstName.Contains(searchString) || 
     user.LastName.Contains(searchString) 
    select user; 

हालांकि यह अपने SQL क्वेरी के बराबर नहीं है। निम्नलिखित बराबर है:

var users = 
    from user in db.Users 
    let fullName = user.FirstName + user.LastName 
    where fullName.Contains(searchString) 
    select user; 
+0

ब्ला इसे पीटा :(+1 – Phill

+0

यह काम किया:) धन्यवाद! दूसरे कोड बॉक्स में उत्तर के लिए – user709712

+2

+1, लेकिन मैं पहले बॉक्स में कोड के बारे में सोच रहा हूं। मैं कभी काम नहीं देख सकता। उदाहरण: सर्चस्ट्रिंग = "फर्स्ट लास्ट" मेल नहीं खाएगा अगर फर्स्टनाम तालिका में "फर्स्ट" और लास्टनाम तालिका "अंतिम" है, तो मुझे लगता है कि आपको उस कार्य के लिए स्ट्रिंग को विभाजित करने की आवश्यकता होगी। – rasmusvhansen

1
// get all items from table where firstname like searchstring or lastname like searchstring 
var result = from p in db.Table 
      where (p.Firstname.Contains(searchString) || p.Lastname.Contains(searchString)) 
      select p; 
+0

उसके पास अपने प्रश्न में एसक्यूएल के साथ कुछ लेना देना नहीं है। उदाहरण के लिए मेरा नाम लो। मेरे पूर्ण नाम की तलाश में मुझे अपने एसक्यूएल में वापस कर दिया जाएगा लेकिन आपकी क्वेरी में नहीं। –

4
var result = from p in db.Table 
      let fullname = p.FirstName + " " + p.Lastname 
      where fullname.Contains(searchString) 
      select new { Fullname = fullname }; 
+0

आपकी मदद के लिए धन्यवाद! =) – user709712

+0

उम्मीद है कि अधिक लोग आगे पढ़ेंगे क्योंकि इस समाधान को "बॉब", "बॉब एस" और "बॉब स्मिथ" खोज तारों का उपयोग करते समय बॉब स्मिथ मिलेगा। अच्छा जवाब, धन्यवाद। –