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