我有一個csv文件有兩列;綽號和等級。 我試圖達到的是;如果第一列包含重複項,則 然後比較第二列值;在一個新的CSV文件存儲暱稱和排名較高值的有一個csv文件與兩列,如果第一列包含重複,比較彼此的第二列值
即想象這是csv文件: ABC,8 QWERTY,2 lplo,5 ABC,15
邏輯:ABC的被複制,所以比較它們的值,因爲15高於8,將abc存儲在新的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