我有一個數組statsname作為 蘋果 X 香蕉 ÿ 奇異果 ž 我需要將蘋果,香蕉和獼猴桃放入一個數組中,將水果和X,Y和Z放入一個稱為字母的數組中。 有沒有簡單的C#機制?
在提供索引的重載位置使用IEnumerable。 var fruit = statsname.Where((s,i)=> i%2 == 0).ToArray(); var Alphabets = statsname.Where((s,i)=> i%2!= 0).ToArray(); | 從如何在C#中使用Enumerable獲取替代元素中被盜 var fruit = myArray.Where(((t,i)=> i%2 == 0).ToArray(); var Alphabets = myArray.Where((t,i)=> i%2 == 1).ToArray(); | 如果我理解您正確地詢問您想要什麼,則非常簡單: 您想要將水果放入水果數組中,並與字母相同,它們交替出現在數組statsname中,因此: for(int i = 0,j = 0; i list = new List (){“ apple”,“ X”,“ banana”,“ Y”,“ Kiwi”,“ z”}; var result = list.Select(((l,i)=> new {l,i}) .GroupBy(p => p.i%2) 。選擇(x => x。選擇(v => v.l).ToList()) .ToList(); 然後,您有一個列表列表: | list 水果=新的List (); list 字母=新的List (); 對於(int i = 0; i everyOther (IEnumerable 集合) { using(var e = collection.GetEnumerator()){ while(e.MoveNext()){ 收益率e.Current; e.MoveNext(); //跳過一個 } } } 您可以使用System.Linq.Skip跳過第一個元素。 string [] words =“ apple X banana Y Kiwi z” .Split(); var fruit = everyOther(words); var Alphabets = everyOther(words.Skip(1)); 只需將它們用作新集合或對它們調用.ToArray()或.ToList(): foreach(水果中的字符串f) Console.WriteLine(f); string [] anArray = fruit.ToArray(); //使用System.Linq 現在您有了所需的東西。 迭代器是產生收益的方法,請參見迭代器(《 C#編程指南》)。這是該語言非常強大的功能。您可以: 跳過元素 裝飾元素 變更順序 連接序列(請參閱System.Linq.Concat) ... | 這是一些工作代碼,希望對您有所幫助: 使用系統; 使用System.Collections.Generic; 使用System.IO; 使用System.Linq; 使用System.Text; 使用System.Threading.Tasks; 命名空間ReadFile { 班級計劃 { 靜態無效ReadFile(字符串filePath,List custumerNames,List phoneNumbers) { 字符串行= string.Empty; var fileStream = new StreamReader(filePath); bool isPhoneNumber = true; while((line = fileStream.ReadLine())!=空) { 如果(isPhoneNumber) { phoneNumbers.Add(Convert.ToInt32(line)); isPhoneNumber = false; } 其他 { custumerNames.Add(line); isPhoneNumber = true; } } fileStream.Close(); } 靜態void Main(string [] args) { Console.WriteLine(“已開始讀取文件...”); List custumersNamesList = new List (); List custumersPhonesNumbers =新的List (); ReadFile(“ SampleFile.txt”,custumersNamesList,custumersPhonesNumbers); //假設兩個列表的長度相同。 對於(int i = 0; i