2011-08-19 10 views
6

के साथ शुरू होता है, मैं एंटिटी फ्रेमवर्क 4.1 के साथ एमवीसी 3 का उपयोग कर रहा हूं और मुझे एक ग्रिड मिला है जो कंपनी के नाम के पहले चरित्र द्वारा पेज किया गया है। मैंने यह बहुत अच्छा काम किया है लेकिन कुछ कंपनियां एक संख्या से शुरू होती हैं। मैं चयनित नंबर से शुरू होने वाली कंपनियों को प्राप्त करने के लिए निम्न LINQ क्वेरी का उपयोग कर रहा हूं, लेकिन मैं संख्या से शुरू होने वाले लोगों का चयन कैसे कर सकता हूं?इकाई फ्रेमवर्क: जहां फ़ील्ड नंबर

var b = (from c in dbContext.Companies 
      where c.CompanyName.StartsWith(selectedCharacter) 
      select c) 

मैं कोशिश की है:

where char.IsNumber(l.CompanyName[0]) 

लेकिन, मुझे कोई त्रुटि मिलती है, क्योंकि यह कैसे एसक्यूएल करने के लिए इसे परिवर्तित करने के लिए पता नहीं है।

संपादित करें: मुझे पता है कि मैं बस कर सकता हूं। कॉम्पनीनाम। स्टार्ट्सविथ ("1") || .CompanyName.StartsWith ("2"), आदि .. क्या कोई बेहतर तरीका है? । कोई विचार?

+2

और c.CompanyName.StartsWith (selectedCharacter) selectedCharacter के रूप में अभी भी '1', '2' .... हो सकता है के साथ एक समस्या क्या है – Incognito

+0

जब से मैं सवाल .CompanyName.StartsWith ("1 का उपयोग कर मैं यह परीक्षण किया तैनात ") || .CompanyName.StartsWith ("2") और यह शायद सबसे अच्छा तरीका है लेकिन यह दोहराया लग रहा था। एसक्यूएल वह है जो आप उम्मीद करेंगे: कहां ([विस्तार 1]। [कंपनीनाम] '1%' की तरह) या ([विस्तार 1]। [कंपनीनाम] '2%' की तरह) या ([विस्तार 1]। [कंपनी नाम] LIKE '3%') .. आदि – Jamiegs

उत्तर

9

आप ऐसा कुछ कर सकते हैं।

var numbers = new string[]{"1","2","3","4","5","6","7","8","9","0"}; 
var b = (from c in dbContext.Companies 
     where numbers.Contains(c.CompanyName.Substring(0,1)) 
     select c).ToList(); 

यदि आप अपनी कंपनी खाली हैं तो आप किसी समस्या में भाग सकते हैं।

+0

मैंने आपके सुझाव की कोशिश की लेकिन मुझे निम्नलिखित अपवाद मिला: 'System.Char' प्रकार का निरंतर मान बनाने में असमर्थ। इस संदर्भ में केवल आदिम प्रकार (जैसे इंट 32, स्ट्रिंग, और ग्विड ') समर्थित हैं। – Jamiegs

+0

आप केवल नए char को स्ट्रिंग में बदल सकते हैं। अब मेरा जवाब अपडेट कर देगा। – Jethro

+0

मैंने पहले कोशिश की, लेकिन यह निम्नलिखित अपवाद देता है: LINQ से संस्थाएं 'System.String ToString()' विधि को विधि नहीं पहचानती हैं, और इस विधि को स्टोर अभिव्यक्ति में अनुवादित नहीं किया जा सकता है। – Jamiegs

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