2013-02-22 118 views
9

मैं LINQ क्वेरी का उपयोग करके अपने डेटाबेस तालिका से 2 तत्वों का चयन करना चाहता हूं और मैंने एक उदाहरण देखा जो UNION का उपयोग करता है मेरे पास बहुत अधिक अनुभव नहीं है लेकिन मुझे लगता है कि शायद यही मुझे चाहिए लेकिन मैं एक त्रुटि प्राप्त करें जिसे मैं ठीक नहीं कर सकता और मुझे यकीन नहीं है कि यह ठीक है या नहीं।लिंक यूनियन क्वेरी दो तत्वों का चयन करने के लिए

IList<String> materialTypes = ((from tom in context.MaterialTypes 
            where tom.IsActive == true 
            select tom.Name) 
            .Union(from tom in context.MaterialTypes 
            where tom.IsActive == true 
            select (tom.ID))).ToList(); 

के रूप में ऐसा लगता है कौन सा IEnumarebale साथ IQueryable पर UNION उपयोग करने के लिए कोशिश कर रहा है के बारे में शिकायत कर रहा है: तो यहाँ मेरी क्वेरी है। मुझे लगता है कि ठीक करने के लिए ToString() इस तरह जोड़कर कोशिश की - (tom.ID).ToString जो Visual-Studio-2010 में त्रुटि रेखांकन की सफाई करने के लिए नेतृत्व लेकिन क्रम में मुझे मिलता है:

{"LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression."} 

Ty, Leron।

+4

आप 'संघ' का उपयोग करने के बजाय 'नया {tom.Name, tom.ID}' क्यों नहीं चुन रहे हैं? –

+0

मैं डेटा को अपने 'डेटासोर्स' के रूप में उपयोग करना चाहता हूं यदि मैं इसके साथ प्रयास करता हूं तो एक त्रुटि देता है जो अज्ञात प्रकार से स्ट्रिंग में परिवर्तित नहीं हो सकता है। अगर मैं 'ToString() 'को ठीक पहले' टॉलीस्ट() 'जोड़ता हूं तो मुझे एक और रूपांतरण मिलता है त्रुटि - इस बार 'char' से' स्ट्रिंग' तक और 'संघ' समाधान है जिसे मैंने इस तरह की स्थितियों के लिए देखा था। क्या कोई और तरीका है? – Leron

उत्तर

25

संपादित करें:

ठीक है मैंने पाया क्यों int.ToString() LINQtoEF में विफल रहता है, इस पोस्ट को पढ़ने के लिए कृपया: Problem with converting int to string in Linq to entities

यह मेरी तरफ पर काम करता है:

 List<string> materialTypes = (from u in result.Users 
             select u.LastName) 
         .Union(from u in result.Users 
           select SqlFunctions.StringConvert((double) u.UserId)).ToList(); 

तुम्हारा पर यह इस तरह होना चाहिए:

IList<String> materialTypes = ((from tom in context.MaterialTypes 
             where tom.IsActive == true 
             select tom.Name) 
             .Union(from tom in context.MaterialTypes 
             where tom.IsActive == true 
             select SqlFunctions.StringConvert((double)tom.ID))).ToList(); 

धन्यवाद , मैंने आज कुछ सीखा है :)

+0

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

+0

लॉल, मैं दोपहर के भोजन के लिए जाउंगा और इसके बाद परीक्षण करूंगा। अगर यह आपके उत्तर को स्वीकार करने के लिए काम करता है – Leron

+0

मेरी पोस्ट बदल दी तो मुझे लगता है कि यह स्पष्ट है :) – Tom