我目前有一个列表数组,如下所示:
List<string>[] phase2 = new List<string>[200];
其中一些列表是使用字符串(每个8个)初始化的,如下所示:
phase2[0] = new List<string>() { "Bob", "Complex", "B", "AOT", "Yes", "Yes", "Yes", "Yes", };
phase2[1] = new List<string>() { "Joe", "Complex", "B", "AOT", "Yes", "Yes", "Yes", "Yes" };
phase2[2] = new List<string>() { "Bill", "Complex", "A", "AOT", "Yes", "Yes", "Yes", "Yes" };
我正在尝试将每个列表的内容写入.txt文件,并且碰到了我的知识...我希望每行“列表”都在一行上。我知道如何将数组写入文件,将列表写入文件,但不能同时写入两者。我很乐意帮助您解决这一问题。
答案 0 :(得分:0)
听起来您想使用一个“嵌套”的foreach循环,但是不清楚是要它们写入两个单独的文件还是要它们写入同一文件。我将做第二个:
foreach (List<string> currentList in phase2)
{
foreach (string currentElement in currentList)
{
//change this out to whatever file output technique you use.
Console.Write currentElement + ",";
}
//starts a new line
Console.Write "\n"
}
这应该使您知道去哪里(假设您要以列/行样式编写每个列表的内容)。除非您有特殊原因,否则我几乎坚持使用定界符。您可以使用任何字符,但是坚持使用标准(,; | [tab])分隔列实际上只是确保与将来的应用程序兼容。
如果您不想使用分隔符,则只需删除+“,”部分。
将Console.Write命令替换为File输出内容。
答案 1 :(得分:0)
请参见下面的“ ConcatToString”函数:
export class TableComponent implements OnInit {
@Input() student;
@Input() length;
@Input() PageEvent;
@Input() pageSize;
@Input() pageSizeOptions;
@ViewChild(MatSort) sort: MatSort;
dataSource;
p;
displayedColumns: string[] = ['name', 'family',
'score'];
constructor() { }
ngOnInit() {
this.dataSource = new MatTableDataSource(this.student);
this.dataSource.sort = this.sort;
}
applyFilter(filterValue: string) {
this.dataSource.filter = filterValue.trim().toLowerCase();
}
Page($event) {
this.PageEvent.emit(this.p);
}
}
答案 2 :(得分:0)
正如@ swily-drifting指出的那样,遍历2D数据结构时,您将需要使用嵌套循环。根据您的需要,它可以是foreach
,传统的for
甚至是while
。
但是,如果您不关心内存分配或性能(在仅处理200行时似乎是这种情况),则可以使用File和LINQ来实现。请注意,LINQ提供了更加用户友好的API,但是对于这个问题,在后台,它仍然使用嵌套循环。
足够的话。这是一个示例:
private static void WriteToFile(string filePath, List<string>[] content)
{
using (var fileWriter = new StreamWriter(filePath))
{
foreach (var line in content)
{
if (line == null)
{
continue;
}
for (var i = 0; i < line.Count; i++)
{
fileWriter.Write(line[i]);
if (i != line.Count - 1)
{
fileWriter.Write(',');
}
}
fileWriter.WriteLine();
}
}
}
private static void WriteToFileOneLiner(string filePath, List<string>[] content)
{
File.WriteAllLines(filePath, content.Where(line => line != null).Select(line => string.Join(',', line)));
}
public static void Main(string[] args)
{
List<string>[] phase2 = new List<string>[200];
phase2[0] = new List<string>() { "Bob", "Complex", "B", "AOT", "Yes", "Yes", "Yes", "Yes", };
phase2[1] = new List<string>() { "Joe", "Complex", "B", "AOT", "Yes", "Yes", "Yes", "Yes" };
phase2[2] = new List<string>() { "Bill", "Complex", "A", "AOT", "Yes", "Yes", "Yes", "Yes" };
WriteToFile(@"C:\Path\to\my\file.txt", phase2);
WriteToFileOneLiner(@"C:\Path\to\my\file_oneliner.txt", phase2);
}