सी # 4.0 का उपयोग कर सरणी से हर दूसरे तत्व का चयन करें। लैम्ब्डा अभिव्यक्तियों का उपयोग करके निम्नलिखित कैसे किया जा सकता है?लैम्बडा
int[] a = new int[8] { 0, 1, 2, 3, 4, 5, 6, 7 };
// Now fetch every second element so that we get { 0, 2, 4, 6 }
सी # 4.0 का उपयोग कर सरणी से हर दूसरे तत्व का चयन करें। लैम्ब्डा अभिव्यक्तियों का उपयोग करके निम्नलिखित कैसे किया जा सकता है?लैम्बडा
int[] a = new int[8] { 0, 1, 2, 3, 4, 5, 6, 7 };
// Now fetch every second element so that we get { 0, 2, 4, 6 }
int[] list = a.Where((value, index) => index % 2 == 0)
.ToArray();
यह केवल %
(आधुनिक) ऑपरेटर द्वारा calculate के रूप में भी अनुक्रमित का चयन करेंगे।
5 % 2 // returns 1
4 % 2 // returns 0
MSDN के अनुसार:
शेष ऑपरेटर अपने दोस्त है।
int[] everySecond = a.Where((i, ind) => ind % 2 == 0).ToArray();
% ऑपरेटर अपनी दूसरी द्वारा अपनी पहली संकार्य विभाजित के बाद शेष गणना करता है। सभी संख्यात्मक प्रकारों ने शेष ऑपरेटरों को पूर्वनिर्धारित किया है।
+1। – Askolein
अधिक कुशल के लिए Enumerable.Range
var result = Enumerable.Range(0, a.Length/2)
.Select(i => a[2*i])
.ToArray();
या का उपयोग बिटवाइज़ का उपयोग कर एक और दृष्टिकोण की जांच करने के भी:
var result = a.Where((i, index) => (index & 1) == 0)
.ToArray();
+1 बिटवाई विषम/यहां तक कि परीक्षण के लिए +1 जो '%' ऑपरेटर से कहीं अधिक कुशल है। तो उत्तम दर्जे का :-) – Askolein
http://stackoverflow.com/questions/2229107/what-is-the-fastest-way-to-find-if-a-number-is-even-or-odd –
+1, मैं भूल गया, कि ' जहां सूचकांक के साथ अधिभार भी है :) ई। लिपर्ट लिंक के लिए –