値を個別のリストに読み込むことはしません。別々のリストを維持する場合、すべてのリストの同期を維持することを心配する必要があります。1 行のすべての情報を保持するために使用できるオブジェクトを作成します。
public class Entry
{
// give meaningful names to the column values
public int Column1 { get; set; }
public int Column2 { get; set; }
public int Column3 { get; set; }
public int Column4 { get; set; }
// overriden to make re-constructing the line for the file easier
public override string ToString()
{
// assuming tab as the delimiter, replace with whatever you're using
return string.Format("{0}\t{1}\t{2}\t{3}", this.Column1, this.Column2,
this.Column3, this.Column4);
}
}
次に、値を読み込むと、次のことができます。
var entries = new List<Entry>();
using (var fStream = File.OpenRead(fileLocation))
using (var reader = new StreamReader(fStream))
{
while (!reader.EOF)
{
var line = reader.ReadLine();
// assuming tab as the delimiter, replace with whatever you're using
var parts = line.Split('\t');
if (parts.Length != 4)
{
// whatever you need to do for error handling
// you could throw an error or just skip to the next line
continue;
}
entries.Add(
new Entry
{
// ideally you'd use int.TryParse to provide further error handling
Column1 = int.Parse(parts[0]),
Column2 = int.Parse(parts[1]),
Column3 = int.Parse(parts[2]),
Column4 = int.Parse(parts[4])
}
);
}
}
次に、1 つの列の値だけを操作する必要がある場合は、LINQ を使用して必要な値だけをクエリできます。
var column1Values = from entry in entries
select entry.Column1;