7899
6534
我有一個數組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