#c#
#c#
Вопрос:
Я создал простую программу для чтения из текстового файла для загрузки данных DataTable
. Но как я могу отобразить DataTable
информацию в консоли? Console.Write
/ Console.WriteLine
не принимает DataTable
в качестве параметра?
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompareLinuxWithWindow
{
class Program
{
static void Main(string[] args)
{
ConvertToDataTable(@"C:UsersmanchunlDesktopSample.txt", 10);
Console.WriteLine();
Console.WriteLine("Press enter to exit.");
Console.Read();
}
public static DataTable ConvertToDataTable(string filePath, int numberOfColumns)
{
DataTable tbl = new DataTable();
for (int col = 0; col < numberOfColumns; col )
tbl.Columns.Add(new DataColumn("Column" (col 1).ToString()));
string[] lines = System.IO.File.ReadAllLines(filePath);
foreach (string line in lines)
{
var cols = line.Split(',');
DataRow dr = tbl.NewRow();
for (int cIndex = 0; cIndex < 10; cIndex )
{
dr[cIndex] = cols[cIndex];
}
tbl.Rows.Add(dr);
}
return tbl;
}
}
}
Комментарии:
1. Используйте следующее: foreach (строка DataRow в dt. AsEnumerable()) { Консоль. Строка записи (string. Join(«,», строка. itemArray. Выберите(x => x.toString()))); }
2. Во-первых, вы анализируете файл (исправно) и отбрасываете результат в
Main
. Сохраните ее в переменной и повторяйте строку за строкой и столбец за столбцом, применяя любое форматирование, которое вы можете пожелать.3. @jdweng Код, который я должен применить внутри main или ConvertToDataTable? Я новичок в C # : (
4. Вы должны изменить первый список на: DataTable dt = ConvertToDataTable(@»C:UsersmanchunlDesktopSample.txt «, 10); В вашем текущем коде таблица определена только локально внутри ConvertToTable. Как только вы измените код, вы можете поместить мой цикл в любое место.
5. Уже могу. Но на самом деле любое другое преобразование текстового файла в DataTable сравнивается с прямой линией записи для текстового файла. Оба контекста текстового файла предполагают, что это sometext1, sometext2, sometext3, sometext4, sometext5, sometext6, sometext7, sometext8, sometext9, sometext10
Ответ №1:
Вы почти на месте. Пожалуйста, попробуйте это
using System;
using System.Data;
namespace CompareLinuxWithWindow
{
class Program
{
static void Main(string[] args)
{
DataTable dt= ConvertToDataTable(@"C:UsersmanchunlDesktopSample.txt", 10);
DataTable dt2= ConvertToDataTable(@"C:UsersmanchunlDesktopSample.txt2", 10);
//Add these lines
for(int i=0;i<dt.Rows.Count;i ) //looping through all rows including the column. change `i=1` if need to exclude the columns display
{
for (int j = 0; j < dt.Columns.Count; j ) //looping through all columns
{
Console.WriteLine(dt.Rows[i][j]); //display of the data
}
}
//End of change
//Added for 2nd txt file
for(int i=0;i<dt2.Rows.Count;i ) //looping through all rows including the column. change `i=1` if need to exclude the columns display
{
for (int j = 0; j < dt2.Columns.Count; j ) //looping through all columns
{
Console.WriteLine(dt2.Rows[i][j]); //display of the data
}
}
//End :: Added for 2nd txt file
Console.WriteLine("Press enter to exit.");
Console.Read();
}
public static DataTable ConvertToDataTable(string filePath, int numberOfColumns)
{
DataTable tbl = new DataTable();
for (int col = 0; col < numberOfColumns; col )
tbl.Columns.Add(new DataColumn("Column" (col 1).ToString()));
string[] lines = System.IO.File.ReadAllLines(filePath);
foreach (string line in lines)
{
var cols = line.Split(',');
DataRow dr = tbl.NewRow();
for (int cIndex = 0; cIndex < numberOfColumns; cIndex )//changed hardcoded value of 10 to numberOfColumns
{
dr[cIndex] = cols[cIndex];
}
tbl.Rows.Add(dr);
}
return tbl;
}
}
}
Пожалуйста, дайте мне знать, если это поможет.
Комментарии:
1. Это работает, но могу ли я загрузить из 2 текстовых файлов. Потому что это показывает, что она использовалась другим процессом. Когда я читаю из этой таблицы данных dt2= ConvertToDataTable (@»C:UsersmanchunlDesktopSample2.txt «, 10);
2. @apple, я создал
DataTable dt2= ConvertToDataTable(@"C:UsersmanchunlDesktopSample2.txt", 10);
. У меня это работает. Пожалуйста, объясните более подробно3. Я прочитал файл 2txt, поместив его следующим образом.. DataTable dt= ConvertToDataTable(@»C:UsersmanchunlDesktopSample1.txt «, 10); DataTable dt2= ConvertToDataTable(@»C:UsersmanchunlDesktopSample2.txt «, 10); но как только я выполняю это в строке string[] lines = System.IO.File. ReadAllLines(путь к файлу); Он показывает мне сообщение об ошибке System.IO.IOException: «Процесс не может получить доступ к файлу»C:UsersmanchunlDesktopSampel1.txt ‘ потому что он используется другим процессом.’
4. Я обновил ответ, он работает для меня. Пожалуйста, попробуйте и дайте мне знать.
5. По-прежнему отображается сообщение об ошибке в строке string[] lines = System.IO.File. Строки чтения (путь к файлу); Исключение System.IO.IOException: «Процесс не может получить доступ к файлу»C:UsersmanchunlDesktopSample2.txt ‘ потому что он используется другим процессом.’