仅当某个字符串与该csv文件中的字符串匹配时,才将csv文件中的文本项添加到列表框中

时间:2014-11-03 04:10:15

标签: c# arrays io listbox streamreader

所以我一直试图弄清楚如何带一整行.csv文件,但只有那些第一个字符串匹配另一个。 这是我到目前为止所得到的,所有我回到我的列表框中的是来自同一随机线的信息。 如果你们可以帮助我解决这个问题,那将非常有用,谢谢

cbocustinfo.Items.Clear();
lstcustinfo.Items.Clear();
StreamReader infile, transdata;
infile = File.OpenText(@"E:\AS2customers.csv");
transdata= File.OpenText(@"E:\AS2data.csv");
string[] custinfo, names;
string[] custtrans;
do
{
    custtrans = transdata.ReadLine().Split(',');
    if (custinfo[1] == custtrans[0])
    {
        lstcustinfo.Items.Add(custtrans[3] + " " + custtrans[4]);
    }
}
while (transdata.EndOfStream != True);
infile.Close(); 
transdata.Close();

这是我初始化custinfo的地方

do
{ 
    custinfo = infile.ReadLine().Split(',');
    names = custinfo[0].Split(' ');
    cbocustinfo.Items.Add(names[0] +" "+ names[1]+ " " + custinfo[1]);
}
while (infile.EndOfStream != true);

1 个答案:

答案 0 :(得分:0)

如果我理解你正在尝试正确做什么,也许将文件读成两个字符串会更容易,然后进行拆分和循环。我不知道你的文件格式,所以这可能是在进行不必要的处理(循环遍历每个客户的所有交易)。

例如:

cbocustinfo.Items.Clear();
lstcustinfo.Items.Clear();

var customers = File.ReadAllText(@"E:\AS2customers.csv")
    .Split(new []{Environment.NewLine}, StringSplitOptions.None);

var transactions = File.ReadAllText(@"E:\AS2data.csv")
    .Split(new []{Environment.NewLine}, StringSplitOptions.None);

foreach (var customer in customers)
{
    var custInfo = customer.Split(',');
    var names = custInfo[0].Split(' ');
    cbocustinfo.Items.Add(names[0] + " " + names[1]+ " " + custinfo[1]);

    foreach (var transaction in transactions)
    {
        var transInfo = transaction.Split(',');

        if (custInfo[1] == transInfo[0])
        {
            lstcustinfo.Items.Add(transInfo[3] + " " + transInfo[4]);
        }
    }
}