2009-08-12 11 views
7

लिंक से SQL के साथ पंक्ति के ROW_NUMBER() को खोजने के लिए पेजिंग उद्देश्यों के लिए ROW_NUMBER() का उपयोग करता है, यानी जब आप Skip() और Take() का उपयोग करते हैं।लिंक से SQL

हालांकि, मुझे वास्तव में क्वेरी में ROW_NUMBER() मानों का उपयोग करने का कोई तरीका नहीं दिख रहा है। मुझे एक प्रश्न के भीतर एक रिकॉर्ड के ROW_NUMBER() को खोजने की आवश्यकता है (सभी रिकॉर्ड वापस) के बिना।

मैंने यह सफलतापूर्वक टी-एसक्यूएल और लिंक से ऑब्जेक्ट्स में किया है, लेकिन एक लिंक से एसक्यूएल समाधान छद्म साबित हो रहा है। होगा ROW_NUMBER() -

लेकिन LINQ एसक्यूएल को Select() की ओवरराइड कि एक सूचकांक पैरामीटर का उपयोग का समर्थन नहीं करता है (और है कि, समझ में आता है वास्तव में:

वस्तुओं को

Linq में मैं इस तरह पंक्ति संख्या प्राप्त कर सकते हैं केवल तभी उपयोग किया जाए जब छोड़ें() और टेक() का उपयोग किया जा रहा था)।

मुझे ऐसा समाधान नहीं मिल रहा है जिसके परिणामस्वरूप डेटाबेस से सभी रिकॉर्ड वापस नहीं आते हैं।

क्या यह भी संभव है?

+0

http://stackoverflow.com/questions/1165028/how-do-i-add-rownumber-to-a-linq-query-or-entity नकल? –

+1

@bassfriend - ईएफ और LINQ-to-SQL के पास ऐसे परिचालनों के लिए पूरी तरह से अलग समर्थन है ... –

+0

मैं यहां एक उत्तर देखने की उम्मीद कर रहा था। मैं एक ही मुद्दे में चल रहा हूं - अनुक्रमित अधिभार डब्ल्यू/एल 2 एस काम नहीं करता है। मैं खुश/किसी भी वृद्धिशील आईडी खुश होगा; अनुमान है कि मुझे इसे कई चरणों में करना होगा। –

उत्तर

2

(संपादित करें: की कोशिश की यह अभी भी देता है "Unsupported overload used for query operator 'Select'") ...

तुम क्यों SelectMany यहाँ का उपयोग कर रहे हैं? क्या आपने इसे Select के संस्करण के साथ आजमाया है जिसमें इंडेक्स शामिल है?

.Select((obj, index) => new { obj.ID, Index = index }) 
    .SingleOrDefault(x => x.ID == targetID); 

तुम भी शायद शामिल होना चाहिए एक स्पष्ट OrderBy - LINQ करने वाली एसक्यूएल आप इसे समय के सबसे अधिक बिना दूर प्राप्त करने देता है, लेकिन एफई नहीं करता है।

+0

धन्यवाद मैंने क्वेरी तय की है। लेकिन हाँ, जैसा कि आप कहते हैं, अभी भी समर्थित नहीं है। :( – stucampbell

+0

अभी तक इसका कोई समाधान नहीं है? (* एक एसक्यूएल फ़ंक्शन के अलावा? *) –

-1

आपको AsEnumerable()

i.e शामिल करना होगा।

var rowTarget = 
    mainQuery.AsEnumerable() 
     .Select((obj, index) => new { obj.ID, Index = index }) 
     .SingleOrDefault(x => x.ID == targetID); 
+0

'AsEnumerable' डेटाबेस से सभी रिकॉर्ड खींच देगा, इसलिए यह उद्देश्य को हरा देता है। – jordanbtucker

+0

यह वास्तव में कोई समाधान नहीं है, कृपया इसे वोट दें – Adaptabi

+0

इसे डाउनवॉटिंग के रूप में वर्तमान में शीर्ष पर दिखाई देता है लेकिन डॉटनेटवाइज़ की तरह, यह एक समाधान नहीं है। – stucampbell

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