2012-06-19 21 views
7

को महत्व देता है अपने पृष्ठों में से एक में मैं अगर एक ग्राहक के बारे में दी गई जानकारी को नकल PAN NO,Email,Mobile No जो previously.Currently दर्ज किया गया है हो सकता है मैं इस Linq To SQL बयानLINQ क्वेरी

var duplicate = (from dup in dt.Data_Customer_Logs 
        where dup.cPanGirNo == panno 
          || dup.cEmail == email 
          || dup.nMobileNo.ToString() == mobno 
    select dup).Any(); 
का उपयोग कर इसे कोशिश कर रहा हूँ होते जांच करने की आवश्यकता

यह काम कर रहा है लेकिन क्या कोई मेरी मदद कर सकता है कि मेरी समस्या को हल करने के लिए सही तरीका क्या है। इसके अलावा यदि कोई रिकॉर्ड नहीं मिला तो परिणाम क्या होगा। कोई भी सुझाव स्वागत है।

+1

वास्तव में क्या आप "यह काम नहीं कर रहा है" मतलब है? –

+0

@ ErenErsönmez मैंने डुप्लिकेट ईमेल आईडी पास करके कोशिश की लेकिन यह "अगर रिकॉर्ड मिला" भाग निष्पादित नहीं किया। – freebird

+0

यह काम करना चाहिए, लेकिन मामले या अग्रणी/पिछली जगहों से संबंधित मुद्दे हो सकते हैं –

उत्तर

5
bool duplicateExists = dt.Data_Customer_Logs.Any(x => 
         x.cPanGirNo == panno 
         || x.cEmail == email 
         || x.nMobileNo.ToString() == mobno); 

यह एक बालक क्लीनर है अगर तुम सिर्फ यह जानना चाहते हैं इस तरह के रिकॉर्ड मौजूद हैं या नहीं चाहते हैं। और मुझे लगता है कि यह क्लाइंट साइड पर कई रिकॉर्ड वापस लाने से बचेंगे और फिर परिणाम पर IEnumerable<T>.Any कर देगा।

आप भी रिकॉर्ड है कि मापदंड से मेल खाने वापस पाने के लिए की जरूरत है, तो आप IQueryable<T>.Where उपयोग कर सकते हैं:

var duplicates = dt.Data_Customer_Logs.Where(x => 
         x.cPanGirNo == panno 
         || x.cEmail == email 
         || x.nMobileNo.ToString() == mobno); 
if(duplicates.Any()) 
{ 
    // use duplicates... 
    foreach(var dup in duplicates) 
    { 
     //use dup.cEmail, dup.nMobileNo, etc. 
+0

मैंने पहले लैम्ब्डा एक्सप्रेशन का उपयोग नहीं किया है, क्या आप मुझे इस्तेमाल की गई क्वेरी के बारे में कुछ बता सकते हैं।सहायता के लिए धन्यवाद। – freebird

+0

निश्चित रूप से। 'किसी भी' में सब कुछ एक लैम्ब्डा अभिव्यक्ति है। यहां लैम्ब्डा अभिव्यक्ति 'बूल मायफंक्शन (टी एक्स)' जैसे फ़ंक्शन के रूप में कार्य करती है। हमें सी # की प्रकार अनुमान विशेषता के लिए स्पष्ट रूप से 'x' (टी) के प्रकार को निर्दिष्ट करने की आवश्यकता नहीं है। –

+0

यदि मुझे रिकॉर्ड मिलते हैं तो मैं उन्हें कैसे प्राप्त करूं, मेरा मतलब है कि परिणाम प्राप्त करने के लिए आईनेमेरेबल का उपयोग कैसे करें, एक छोटा सा उदाहरण मेरे लिए काफी अच्छा होगा। बहुत धन्यवाद। – freebird

2

कोशिश इस

var duplicate = (from dup in dt.Data_Customer_Logs 
       where dup.cPanGirNo == panno 
         || dup.cEmail == email 
         || dup.nMobileNo.ToString() == mobno 
select dup).FirstOrDefault(); 

if(duplicate != null && duplicate.Any()) 
    //here logic of what should happend if there is something in db 
+0

ठीक है तो आप मुझे पहली बार जांचने के लिए सुझाव दे रहे हैं कि यह शून्य है या नहीं और फिर किसी भी() का उपयोग करें, क्या मुझे सभी रिकॉर्ड्स मिल सकते हैं। धन्यवाद। – freebird

+0

आपको पहले शून्य की जांच करनी चाहिए हमेशा NullReferenceException – harry180

+0

से बचने के लिए यह अच्छा अभ्यास है, लेकिन कोई भी() सत्य या गलत लौटाता है, इसलिए यदि यह शून्य है तो यह अपवाद फेंक देगा। सुनिश्चित नहीं है। – freebird