2012-12-27 20 views
5

क्या कोई लिंक अभिव्यक्ति है जो किसी सरणी में अंतिम गैर-शून्य मान की अनुक्रमणिका देता है? मुझे एक विस्तार में दिलचस्पी नहीं है, केवल एक साधारण लिनक अभिव्यक्ति है।लिंक - अंतिम गैर-शून्य संख्या का सूचकांक

मैं इस छद्म कोड की तरह कुछ कल्पना कर रहा हूँ:

int index = {0, 2, 1}.LastOrDefaultAt(i => i > 0); 

दिए गए मान 2 होना चाहिए; कि आप का उल्लेख "गैर शून्य"

int index = Array.FindLastIndex(myIntArray, item => item > 0); 

मैं नोटिस "अधिक से अधिक के बजाय:

उत्तर

7

कहा जाता है आप इस के लिए Array.FindLastIndex<T> विधि का उपयोग कर सकते हैं शून्य से "अपने प्रश्न पाठ में। क्या आपका भविष्य होना चाहिए: item => item != 0?

+0

वास्तव में इस सवाल का जवाब मैं खोज रहा था है कि। धन्यवाद। अगर मैं "myIntArray" टाइप करता हूं तो यह इंटेलिजेंस FindLastIndex क्यों नहीं दिखाता है, इस मुद्दे को सामने लाता है। - यह कई अन्य तरीकों से पता चलता है। यह दिखाता है कि क्या मैं "ऐरे" टाइप करता हूं। – BSalita

+1

क्योंकि यह 'ऐरे' वर्ग पर एक स्थिर विधि है; एक उदाहरण विधि नहीं है। – Ani

+0

आह। एक बार फिर धन्यवाद। ऐसा लगता है कि इंटेलिजेंस के लिए डेवलपर्स को एक सुराग देने के लिए कुछ तरीका होना चाहिए कि अतिरिक्त स्थैतिक विधियां उपलब्ध हों। मैंने बस कुछ घंटों बिताए जो इंटेलिसेंस ने रोकने में मदद की थी। – BSalita

1

List<T> इस के लिए एक विस्तार विधि FindLastIndex

var index = new int[] { 0, 2, 1}.ToList().FindLastIndex(x => x > 0); 
0
class Program 
{ 
    static void Main(string[] args) 
    { 
     int[] index = { 0, 2, 1 }; 

     var query = from p in index 
        where p != 0 
        orderby p descending 
        select p; 

     Console.WriteLine(query.FirstOrDefault()); 
     Console.ReadKey(); 
    } 
} 

आउटपुट: 2 विधि वाक्य रचना में लिखा जा सकता है अगर वांछित:

var index = new int[] { 0, 2, 1 }.Where(a => a != 0).OrderByDescending(a => a).FirstOrDefault();