C# 是否有一种方法可以从多个文件中读取数据,并将每个文件的每一列保存在一个单独的数组中
我读取每个文件的名称和详细信息,然后在C# 是否有一种方法可以从多个文件中读取数据,并将每个文件的每一列保存在一个单独的数组中,c#,file,file-io,C#,File,File Io,我读取每个文件的名称和详细信息,然后在MessageBox中预览它们以进行测试。 是否有办法将所有文件的每一列记录在一个单独的数组中 气象图 var pathFiles = Directory.EnumerateFiles(@"C:\Meteo", "*.dat"); List<string> lines = Directory.EnumerateFiles(@"C:\Meteo", "*.dat").SelectMany(file => Fil
MessageBox
中预览它们以进行测试。
是否有办法将所有文件的每一列记录在一个单独的数组中
气象图
var pathFiles = Directory.EnumerateFiles(@"C:\Meteo", "*.dat");
List<string> lines = Directory.EnumerateFiles(@"C:\Meteo", "*.dat").SelectMany(file => File.ReadLines(file)).ToList();
//Display only filenames.
//foreach (string file in Directory.EnumerateFiles(@"C:\Meteo", "*.dat"))
//{
// MessageBox.Show(file);
//}
foreach (string file in Directory.EnumerateFiles(@"C:\Meteo", "*.dat"))
{
// read each line
foreach (string line in File.ReadLines(file))
{
// and show file name and line in a message box
MessageBox.Show(line, file);
}
}
var-pathFiles=Directory.EnumerateFiles(@“C:\Meteo”,“*.dat”);
列表行=目录.EnumerateFiles(@“C:\Meteo”,“*.dat”)。选择多个(文件=>file.ReadLines(文件)).ToList();
//仅显示文件名。
//foreach(目录.EnumerateFiles(@“C:\Meteo”,“*.dat”)中的字符串文件)
//{
//MessageBox.Show(文件);
//}
foreach(目录.EnumerateFiles(@“C:\Meteo”,“*.dat”)中的字符串文件)
{
//读每一行
foreach(文件中的字符串行。ReadLines(文件))
{
//并在消息框中显示文件名和行
MessageBox.Show(行、文件);
}
}
我看到数据是可视化的,但我想把它们分成11个单独的数组
PIC(具有相同结构的。*dat文件太多):
首先,我们必须确定什么是柱分离器;似乎是表格或/和空间: 现在,我们来关注
数据
:
var result = Enumerable
.Range(0, data.Any() ? data[0].Length : 11)
.Select(column => data
.Select(line => line[column])
.ToArray())
.ToArray();
因此,您将拥有11个数组(列)的数组:
但是,我怀疑您是否真的希望透视数据
。我建议把每一行变成一个类,例如
然后,当您想要使用,比如说,date
时,您可以将数组作为
var dates = result
.Select(item => item.date)
.ToArray();
编辑:或者,如果您想在消息框中查看项目(例如,date
和id
)(请参见下面的注释),则只需查看foreach
:
foreach (var item in result)) {
MessageBox.Show($"{item.date} and {item.id}");
}
你是在处理CSV文件还是什么?*dat文件我会上传图片现在我看到消息框上的所有值,但我需要将每一列保存在单独的数组中?你有什么理由希望它们在单独的数组中,与其使用一个对象来保存一行广告的所有细节,还不如使用这些对象的单个列表/数组?我可以在代码中输入foreach吗?我想在消息中看到单独的数据box@Ben约翰逊:当然,您可以迭代结果
并使用消息框。以所需格式显示
(借助字符串插值)
var result = Directory
.EnumerateFiles(@"C:\Meteo", "*.dat")
.SelectMany(file => File.ReadLines(file))
.Select(line => line.Split(new char[] {'\t', ' '}, StringSplitOptions.RemoveEmptyEntries))
.Select(items => new {
id = items[0],
date = DateTime.ParseExact(items[1], "dd-MM-yyyy", CultureInfo.InvariantCulture),
/* etc. */
})
.ToList();
var dates = result
.Select(item => item.date)
.ToArray();
foreach (var item in result)) {
MessageBox.Show($"{item.date} and {item.id}");
}