有一个csv文件与两列,如果第一列包含重复,比较彼此的第二列值
我有一个csv文件有两列;绰号和等级。 我试图达到的是;如果第一列包含重复项,则 然后比较第二列值;在一个新的CSV文件存储昵称和排名较高值的有一个csv文件与两列,如果第一列包含重复,比较彼此的第二列值
即想象这是csv文件: ABC,8 QWERTY,2 lplo,5 ABC,15
逻辑:ABC的被复制,所以比较它们的值,因为15高于8,将abc存储在新的csv文件中。
有什么建议吗?无法弄清楚如何比较第二个值
正如注释中所述,您可以使用字典,并将值存储(如果值较高)。
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
非常感谢这位伴侣 – Teallaair9
对不起,是通过代码,并无法理解这一行: if(nameAndRanks [name]
我没有比较int与字符串。我将字符串转换为int“int.Parse(values [1]);”看看https://msdn.microsoft.com/en-us/library/b3h1hf19(v=vs.110).aspx –
另一解决办法是在升序模式中的第一列和第二柱中的下行第一排序CSV文件模式。这会按照您想要的顺序放置数据,并且在比较行时只取第一个数据行,因为这是具有最高数值的数据行,并将其存储在新的CSV文件中。
到目前为止你有尝试过什么吗? –
你可以使用一个字典,并恢复它的值如果它更高 –
@DangerZone我可以使用foreach即nickname.IndexOf(nick)!=昵称.LastIndexOf(尼克)得到重复,但然后无法弄清楚如何比较第二个值,如何跟踪它。附:我刚刚开始学习c#2个月前 – Teallaair9