有没有一种简单的方法来搜索 csv 字符串数组,然后在一行中写入某些数据位。目前它搜索一个 csv 文件并根据来自 TextBoxes 的两个用户输入提取某些数据,然后对其进行排序并将其写入另一个 csv 文件。
本质上,如果设备名称相同,我希望它在同一行上写入数据。假设一个设备称为“dev1 id1”,另一个设备称为“dev1 id2”。我不想把它们写在单独的行上(就像现在这样),我希望它写在一个组合的行上。就像是:
dev1,id1,id2
代替:
dev1,id1
dev1,id2
我曾尝试使用 for 循环和 if 语句,但它很快就会变得混乱。Bellow 是我当前的代码(抱歉,由于工作原因,我不得不重新输入任何错字)。
StreamWriter sw = new StreamWriter(@"c:\test.csv");
StreamReader sr = new StreamReader(@"c:\rtest.csv");
List<string> list = new List<string>();
string line = "Station,Device,Key,AOR";
string sta = textBox1.Text;
string[] devs = richTextBox1.Text.Split(',').Select(dev => dev.Trim()).ToArray();
string[] sort,strs;
bool cont;
sw.WriteLine(line);
while (!sr.EndOfStream)
{
strs = line.Split(',');
cont = (devs.Any(s => strs[1].IndexOf(s, StringComparison.OrdinalIgnoreCase) >= 0));
if (strs[2].ToString() == sta && cont ==true)
{
list.Add(line.ToString());
}
line = sr.ReadLine();
}
sort = new string[list.Count];
list.CopyTo(sort);
Array.Sort(sort);
foreach (string var in sort)
{
strs = var.Split(',');
sw.WriteLine(string.Format("{2},{1},{0},{3}", strs[0], strs[1], strs[2], strs[3]));
}
sw.Close();
if (File.Exists(@"c:\test.csv")
{
Process.Start(@"c:\test.csv");
}
希望我的问题可以理解,谢谢。