2016-08-26 9 views
1

私は、File.ReadLines(filepath)を使って読み込まれているテキストファイルを持っています。それは:を使用して区切られたファーストネームとラストネームで満たされています。返されたデータ型のforeachループの最初と最後の名前にアクセスできるLINQを使用する方法はありますか?LINQの使用中に分割文字列にアクセスするにはどうすればよいですか?

// john:doe 
// david:smith 
// michael:rogers 

var Names = File.ReadLines(filepath) 
    .Select(line => line.Split(':')); 

foreach (var list in Names) 
listbox1.Items.Add(list); //(first name) before : 
listbox2.Items.Add(list); //(last name) after : 
+0

を行うことがmullti列 'ListBox'ですか? –

答えて

2

です。見つからないのは、配列の最初の項目からfirstNameを取得し、2番目の項目の最後の名前を取得することだけです。あなたの例に基づいて

foreach (var list in Names) 
{ 
    listbox1.Items.Add(list[0]); //(first name) before : 
    listbox2.Items.Add(list[1]); //(last name) after : 
} 
0

list[0]さて、あなたはほとんどそこにいる第一及び第二list[1]

listbox1.DataSource = Names.Select(a => a[0]).ToArray(); 
listbox2.DataSource = Names.Select(a => a[1]).ToArray(); 
0

、私はそれがない複数列ListBoxであると仮定します。

SelectManyを使用すると、分割後の階層が平坦化されます。

listbox1.DataSource = File.ReadLines(filepath) 
          .SelectMany(line=>line.Split(':')); 

または、AddRangeメソッドを使用して、この

ListBox1.Items.AddRange(File.ReadLines(filepath) 
          .SelectMany(line=>line.Split(':') 
          .Cast<object>() // I think this is redundant remove if not required. 
          .ToArray() 
         ); 
関連する問題