2009-06-03 11 views
31

मैं निम्नलिखित समस्या है के लिए जाँच करना चाहते हैं:अनुक्रम कोई तत्व त्रुटि है, लेकिन मैं अशक्त

public Boolean Exists(String userName) 
{ 
    IRepository<User> = new UserRepository(); 
    User user = userRepository.First(u => u.Name == userName); 

    if (user == null) return false; 

    // Exists! 
    return true; 
} 

समस्या, अब है कि मैं अशक्त के लिए उपयोगकर्ता वस्तु की जाँच नहीं कर सकते। वहां पहुंचने से पहले, मुझे InvalidOperationException मिल रहा है "अनुक्रम में कोई तत्व नहीं है"।

यह वास्तव में मेरे लिए अजीब लगता है, विशेष रूप से क्योंकि मैं अपवादों के साथ नियंत्रण प्रवाह स्थापित नहीं करना चाहता हूं (उदाहरण के लिए प्रयास करें .. पकड़ें और संबंधित भागों में सच/गलत लौटें)।

यहां क्या हो रहा है? यह सामान्य कुछ मेरी respository (संकेत ?!)

वैसे साथ कुछ गड़बड़ है या है वहाँ, इस कोड काम करता है पूरी तरह से जब तत्व यह है कि मैं के लिए देख रहा हूँ मौजूद है (उपयोगकर्ता लिया गया है आदि)। यह कोई काम नहीं होने पर ही काम नहीं करता है।

उत्तर

60

पहले के बजाय FirstOrDefault का उपयोग करें। यह एक खाली संग्रह के चेहरे में शून्य वापस आ जाएगा।

IRepository<User> = new UserRepository(); 
User user = userRepository.FirstOrDefault(u => u.Name == userName); 
+1

@Tomas को रोकने के लिए, मैं वास्तव में आप से पहले मिल गया है, लेकिन मैं एक पोस्ट जवाब संपादन किया वास्तव में एक कोड नमूना शामिल करने के लिए। दूसरा संपादन 2 सेकंड पीछे था :) – JaredPar

+0

सच है जेरेड पहले में मिला: डी (2 सेकंड तक .. यह जेरेड 48 सेकेंड पहले और टॉमस 46 सेकेंड पहले दिखा रहा था)। धन्यवाद सज्जनो !!!! नैनानाबुबू टिप्पणी के लिए – Alex

+0

+1: डी – Gent

22

.FirstOrDefault() को .First() बदलने का प्रयास करें।

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