有一个包含两列的csv文件,如果第一列包含重复,则将第二列值相互比较

时间:2017-04-11 20:47:12

标签: c#

我有一个包含两列的csv文件;昵称和等级。 我想要实现的是; 如果第一列包含重复项, 然后比较第二列值;在新的csv文件中存储昵称和较高值的等级

即。想象一下这是一个csv文件: abc,8 qwerty,2 lplo,5 abc,15

逻辑:abc是重复的,因此比较它们的值,因为15高于8,在新的csv文件中存储abc,15。

有什么建议吗?无法弄清楚如何比较第二个值

2 个答案:

答案 0 :(得分:1)

如评论中所述,您可以使用字典,如果值更高,则存储该值。

    var lines = new List<string>();
    lines.Add("abc, 8");
    lines.Add("qwerty, 2");
    lines.Add("lplo, 5");
    lines.Add("abc, 15");

    var nameAndRanks = new Dictionary<string, int>();
    foreach(var line in lines)
    {
        var values = line.Split(',');
        var name = values[0];
        var rank = int.Parse(values[1]);

        if (nameAndRanks.ContainsKey(name))
        {
            if (nameAndRanks[name] < rank)
            {
                nameAndRanks[name] = rank;
            }
        } else
        {
            nameAndRanks.Add(name, rank);
        }
    }

    foreach (KeyValuePair<string, int> entry in nameAndRanks)
    {
        Console.WriteLine(entry.Key + " : " + entry.Value  );
    }

这个输出将是

abc : 15
qwerty : 2
lplo : 5

答案 1 :(得分:0)

另一种解决方案是首先使用升序模式中的第一列和降序模式中的第二列对 CSV 文件进行排序。这将按照您想要的顺序放置数据,在比较行时只需占用第一行,因为这是具有最高值的数据行并将其存储在新的 CSV 文件中。