将文本文件中的3条记录加载到datagridview中时出现问题。
private void button1_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
if (ofd.ShowDialog() == DialogResult.OK && radioButton1.Checked)
{
System.IO.StreamReader file = new System.IO.StreamReader(ofd.FileName);
string[] columnnames = file.ReadLine().Split('|');
List<string> list = new List<string>();
DataTable dt = new DataTable();
foreach (string c in columnnames)
{
dt.Columns.Add(c);
}
string newline;
while ((newline = file.ReadLine()) != null)
{
DataRow dr = dt.NewRow();
string[] values = newline.Split('|');
for (int i = 0; i < values.Length; i++)
{
dr[i] = values[i];
}
dt.Rows.Add(dr);
}
file.Close();
dataGridView1.DataSource = dt;
}
}
我试图让某人选择一个单选按钮,例如“显示3条记录”,然后打开一个文本文件。然后它将仅在datagridview中列出3条记录。我可以获取要加载的文件,但不知道如何使其仅显示文本文件中的3条记录。有人可以帮我吗?
答案 0 :(得分:4)
var records = File.ReadLines(ofd.FileName).Take(3);
foreach(var record in records)
{
// do stuff
}
此方法的优点在于ReadLines
可以创建一个迭代器,并为StreamReader
调用管道并分别读取每一行。与Take
结合使用时,它仅读取和加载迭代的内容(在本例中为前3行)。
您可以在此处找到(并遵循)源代码
https://referencesource.microsoft.com/mscorlib/R/d989485a49fbbfd2.html
其他资源
读取文件的行。
Enumerable.Take(IEnumerable, Int32) Method
从a的开头返回指定数量的连续元素 顺序。
答案 1 :(得分:1)
您需要计算读取的行数,然后在达到3行时退出读取负载。
int maxLines = 3;
string newline;
while ((newline = file.ReadLine()) != null && --maxLines >= 0)
{
....
}