2011-11-03 13 views
11

का उपयोग कर एसक्यूएल क्वेरी में बहुत बुनियादी लिनक चलाने के लिए शुरुआती चरण LinqPad का उपयोग करके लिंक सीखने की कोशिश कर रहा है और इसे कैसे शुरू किया जाए इसके साथ निराश हो रहा है। मान लीजिए कि मैं एक सी # अभिव्यक्ति और सी # स्टेटमेंट लिखना चाहता हूं जहां मेरे पास एसक्यूएल सर्वर नामक उत्पादों में एक टेबल है और मैं उन सभी पंक्तियों को खींचना चाहता हूं जहां कीमत 50 से अधिक हो। आप इसे कैसे लिखेंगे?लिनपैड

उत्तर

16

चलो कहते हैं कि मैं एक सी # अभिव्यक्ति और मैं कहाँ है एक सी # बयान लिखने के लिए चाहते हैं उत्पाद सर्वर नामक SQL सर्वर में एक तालिका और मैं सभी पंक्तियों को खींचना चाहता हूं जहां कीमत 50 से अधिक है। आप इसे कैसे लिखेंगे?

LINQPad आपके लिए टाइप किए गए डेटाकॉन्टेक्स्ट को स्वचालित रूप से बनाता है, इसलिए आपको कुछ भी तुरंत चालू करने की आवश्यकता नहीं है। सी # अभिव्यक्ति मोड में, केवल फोल्डिंग टाइप करें:

Products.Where(p => p.Price > 50) 

और F5 दबाएं। वैकल्पिक रूप से, आप किसी क्वेरी अभिव्यक्ति का उपयोग करने के लिए पसंद कर सकते हैं:

from p in Products 
where p.Price > 50 
select p 

सी # बयान मोड में, आप डंप() विधि कॉल करने के लिए यह बताने के लिए परिणाम को लिखने के लिए की आवश्यकता होगी। तुम भी अर्धविराम से अभिव्यक्ति को समाप्त करने की आवश्यकता होगी:

Products.Where(p => p.Price > 50).Dump(); 

LINQPad के नमूने अनुभाग में अधिक उदाहरण हैं - 5 मिनट की प्रेरण को देखो। LINQ पैड pluralizes - -

+0

धन्यवाद @ जो। यही वही है जो मैं ढूंढ रहा था। बीटीडब्ल्यू एक्सप्रेशन ने ठीक काम किया लेकिन जब मैं "उत्पादों में पी से चलाता हूं जहां पी.प्रिस> 50 पी का चयन करें" स्टेटमेंट मुझे त्रुटि मिलती है "अपेक्षित"। मैं जोड़ना ; अंत में लेकिन यह या तो मदद नहीं करता है। कोई विचार? –

+0

ऐसा इसलिए है क्योंकि आपके पास सी # स्टेटमेंट चयनित है। वक्तव्य समाप्त होना चाहिए; लेकिन अभिव्यक्ति समाप्त नहीं हो सकती है; मैं बस इस भ्रम को छोड़ देता हूं और सी # प्रोग्राम के साथ जाता हूं :) – Joe

+0

@ जो आप इस प्रश्न के साथ मेरी मदद कर सकते हैं :) http://stackoverflow.com/questions/19291255/linqpad-doesnt-render-group-collection – AuthorProxy

3
var db = new MyDatabaseContext(); // Your database context. 
var result = db.Products.Where(q=>q.Price > 50); 

... जहां db अपने ORM संदर्भ प्रतिनिधित्व करता है। Price डेटाबेस में Price फ़ील्ड में आपके मैपिंग का प्रतिनिधित्व करता है। result परिणाम सेट का प्रतिनिधित्व करता है - आपकी डेटाबेस पंक्तियां/संस्थाएं।

+0

यह "प्रकार या नामस्थान नाम 'MyDatabaseContext' नहीं मिला"। मेरी अज्ञानता के लिए खेद है लेकिन मैं लिंक/ओआरएम के लिए बिल्कुल नया हूं। क्या मुझे लिंकपैड में कुछ स्थापित करने की ज़रूरत है? मेरी धारणा है कि मैं सिर्फ एसक्यूएल के लिए linq का उपयोग कर सकता हूं जैसे कि मैं अपने एसक्यूएल प्रबंधन स्टूडियो का उपयोग करता हूं और सीधे डेटाबेस टेबल –

+0

क्वेरी डेटाबेस डेटाबेस मैपिंग बनाने की आवश्यकता है। 'MyDatabaseContext' जो भी आपने अपना ओआरएम कहा है, उसके लिए सिर्फ एक डमी नाम है। –

+0

क्या आप जानते हैं कि मैं लिंककैड में मैपिंग कहां बना सकता हूं? –

0

चेक आउट: http://msdn.microsoft.com/en-us/library/bb397933(v=vs.90).aspx जो आपको लिंक के लिए परिचय देगा और लैम्ब्डा अभिव्यक्तियों का उपयोग करेगा।

फिर http://msdn.microsoft.com/en-us/library/bb386927.aspx पर एक नज़र है जो आप मूल बातें दे देंगे है, लेकिन अपने विशिष्ट सवाल का जवाब देने:

var products = db.Products.Where(prod => prod.Price > 50); 
foreach(var product in products) 
{ 
    //do something 
} 
+0

बनाने की आवश्यकता है जब मैं इसे सी # प्रोग्राम के रूप में चलाता हूं, i निम्न त्रुटि प्राप्त करें "LINQPad.User.Products 'में' मूल्य 'की परिभाषा नहीं है और' LINQPad.User.Products 'प्रकार के पहले तर्क को स्वीकार करने वाली कोई भी एक्सटेंशन विधि' मूल्य 'नहीं मिल सकती है"। मैं क्या गलत कर रहा हूं? –

+0

आपको डेटाबेस मैपिंग बनाने की आवश्यकता है। क्या आपने पोस्ट किए गए लिंक 2 एसक्यूएल ट्यूटोरियल लिंक पर एक नज़र डाली है? इसमें मूल बातें शामिल हैं। क्या आपके पास एक उत्पाद तालिका के साथ एक डेटाबेस स्थापित है? – Maess

+0

हाँ मैंने इसे देखा है लेकिन लिंककैड में मुझे लगता है कि एकमात्र विकल्प कनेक्शन जोड़ना है। एक बार जब मैंने अपने SQL सर्वर डीबी उदाहरण से कनेक्शन जोड़ा, तो मैं बाईं ओर सभी डेटाबेस/टेबल आदि देख सकता हूं। मुझे बस पता नहीं है या डेटाबेस मैपिंग –

5

बस जोड़ना चाहते थे मैं यह नहीं पता था और यह मेरे लिए एक अच्छा पंद्रह मिनट

मैं एक मेज DentalApplication

DentalApplication.Where(a=> a.PackageID > 0) 

दी बुलाया से चयन करने के लिए कोशिश कर रहा था के लिए पागल हो चलाई मुझे इस त्रुटि

'LINQPad.User.DentalApplication' does not contain a definition for 'Where' 

करने के लिए इसे बदल दिया है 10

और यह

+0

डिफ़ॉल्ट रूप से, Linqpad बाल संघ गुणों pluralizing। कृपया http://stackoverflow.com/questions/7833133/linqpad-adds-an-s-to-the-end-of-every-table देखें – maoyang