में निर्दिष्ट सूचकांक के अनुसार मान लीजिए कि हमारे डेटा के साथ एक सरणी है:चुनना तत्वों एक और सरणी सी #
int[] ind = new int[N] {i_1, ..., i_N};
: लेबल
x
के तत्वों के लिए इसी युक्त आकार
N
की
double[] x = new double[N] {x_1, ..., x_N};
और सरणी
से सभी तत्वों का चयन करने का सबसे तेज़ तरीका क्या है जिसमें ind
के अनुसार कुछ लेबल I
है?
उदाहरण के लिए,
x = {3, 2, 6, 2, 5}
ind = {1, 2, 1, 1, 2}
I = ind[0] = 1
परिणाम:
y = {3, 6, 2}
जाहिर है, यह आसानी से (लेकिन कुशलता और स्वच्छ) छोरों के साथ किया जा सकता है, लेकिन मुझे लगता है जिस तरह से कैसे करने के लिए होना चाहिए करना है कि .Where
और lambdas..Thanks
संपादित करें का उपयोग कर:
MarcinJuraszek द्वारा प्रदान किया गया जवाब पूरी तरह से सही है, धन्यवाद। हालांकि, मैंने उम्मीद में सवाल को सरल बना दिया है कि यह मेरी मूल स्थिति में काम करेगा। आप कृपया एक नज़र कि समस्या क्या है ले सकता है अगर हम सामान्य प्रकार है:
T1[] xn = new T1[N] {x_1, ..., x_N};
T2[] ind = new T2[N] {i_1, ..., i_N};
T2 I = ind[0]
समाधान प्रदान मैं कोई त्रुटि मिलती है "प्रतिनिधि 'System.Func' 2 तर्क ले नहीं है" का उपयोग करना:
T1[] y = xn.Where((x, idx) => ind[idx] == I).ToArray();
आपको बहुत बहुत धन्यवाद
पिन का उपयोग कर के बारे में सोच रहा था, लेकिन बिल्ली: इस की तुलना में कम यह नहीं है वाला .. – flq
यह बहुत अच्छा है , धन्यवाद। क्या आप प्रश्न के संपादित संस्करण को देख सकते हैं? –
जेनिक्स के लिए आपको यह सुनिश्चित करना होगा कि 'टी 2 == टी 2' (या 'टी 2.इक्वाल्स (टी 2)') परिभाषित किया गया है - जेनेरिक बाधा जोड़ें' जहां टी 2: आईक्वेटेबल ' – MarcinJuraszek