2013-04-15 6 views
7

का उपयोग कर सूची में n'th तत्व को छोड़कर सभी तत्व कैसे प्राप्त करें, कहें कि मेरे पास 10 आइटम की एक सूची है।लिंक

List<char> chars = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; 

मैं एक नया n'th छोड़कर सूची में सभी तत्वों से युक्त सूची (जैसे कि, 3 आइटम 'C') की जरूरत है। मैं नहीं चाहता कि मूल सूची को बदल दिया जाए क्योंकि मुझे बाद में इसकी आवश्यकता है।

एक और विकल्प यह है कि, मैं सूची को क्लोन कर सकता हूं और आइटम को हटा सकता हूं, लेकिन फिर एनएथ के बाद सभी आइटमों को स्थानांतरित किया जाना चाहिए।

क्या लिंक का उपयोग कर सूची प्राप्त करने का कोई तरीका है?

संपादित करें:

एक चरित्र सूची में कई बार हो सकता है। मैं केवल 'एन' को हटाया जाना चाहता हूं।

+0

मुझे विश्वास है कि आप 'chars.Take (2) का उपयोग कर सकते हैं। कॉनकैट (chars.Skip (3)) 'लेकिन मुझे वास्तव में निश्चित रूप से पता नहीं है ... – Nolonar

+1

यह सही परिणाम देता है लेकिन यह फिर से शुरू होगा दो बार सूची – ManojRK

उत्तर

16

ज़रूर, overload of Where कि एक सूचकांक पैरामीटर लेता है का उपयोग करते हुए:

var allBut3 = chars.Where((c, i) => i != 2); // use 2 since Where() uses 0-based indexing 
0

आप Enumerable.Where विधि का उपयोग कर सकते हैं।

भविष्यवाणी के आधार पर मूल्यों का एक अनुक्रम फ़िल्टर करता है।

List<char> chars = new List<char>(){'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}; 
var newlist = chars.Where(n => n != chars.ElementAtOrDefault(2)); 

यहाँ एक DEMO है।