我是C#的新手。我有一个巨大的文本文件,包含4923行数据,我希望将其添加到DataGridView。文本文件在句子之间有很多空格和空行。我希望跳过所有空白行和空格并将内容加载到DataGridView。有人能给我一个解决方案吗?这可以在不使用DataTables和Datasource的情况下实现吗?
如果我的问题不明确,请告诉我。我的代码可能有错误。请帮我纠正它
由于
这是我的代码
public void textload()
{
List<string> str = new List<string>();
String st = "";
//Path to write contents to text file
string filename = @"E:\Vivek\contentcopy\clientlist.txt";
Form.CheckForIllegalCrossThreadCalls = false;
OpenFileDialog ofd = new OpenFileDialog();
ofd.FileName = "";
ofd.Filter = "csv files|*.csv|txt files|*.txt|All Files|*.*";
ofd.ShowDialog();
st = ofd.FileName;
if (string.IsNullOrEmpty(ofd.FileName))
return;
string[] lines = File.ReadAllLines(st);
for (int i = 0; i < lines.Length; i++)
{
listBox1.Items.Add(lines[i]);
string[] s = lines[i].Split(' ');
MessageBox.Show(s.Length.ToString());
str.Add(lines[i]);
dataGridView1.Rows.Add();
if (s[i] == null && s[i] == " ")
{
continue;
}
dataGridView1.Rows[i].Cells[i].Value=s[i];
//dataGridView1.Rows[i].Cells[10].Value = s[10];
//dataGridView1.Rows[i].Cells[11].Value = s[11];
//dataGridView1.Rows[i].Cells[12].Value = s[12];
//dataGridView1.Rows[i].Cells[13].Value = s[13];
//dataGridView1.Rows[i].Cells[14].Value = s[14];
//dataGridView1.Rows[i].Cells[15].Value = s[15];
}
File.WriteAllLines(filename, str);
dataGridView1.ReadOnly = true;
}
答案 0 :(得分:1)
一种选择是在您阅读空字符串后立即将其过滤掉。这可以通过LINQ Where和传递条件来完成,该条件检查字符串是否仅仅是空格。 String.IsNullOrWhitepspace涵盖了这一点(此外,还会检查null
在使用ReadAllLines
时不会发生的情况。)
string[] lines = File.ReadAllLines(st)
.Where(s => !String.IsNullOrWhitespace(s))
.ToArray();