我有一个数组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