C# c语言中字典中最常用的3种转换#

C# c语言中字典中最常用的3种转换#,c#,C#,我想弄明白为什么它不起作用。我有一个简单的应用程序转换器应用程序。有6种方法可以将某些单位转换为摄氏度,例如将华氏度转换为摄氏度,将摄氏度转换为华氏度。点击主菜单中的“2”,应用程序应该显示3个最流行的转换,但我只看到2个 using System; using System.Collections.Generic; using System.IO; namespace HelloWorld { class PopularConversions { public

我想弄明白为什么它不起作用。我有一个简单的应用程序转换器应用程序。有6种方法可以将某些单位转换为摄氏度,例如将华氏度转换为摄氏度,将摄氏度转换为华氏度。点击主菜单中的“2”,应用程序应该显示3个最流行的转换,但我只看到2个

using System;
using System.Collections.Generic;
using System.IO;

namespace HelloWorld
{
    class PopularConversions
    {
        public static void ReadLogs()
        {
            var popularConversions = new Dictionary<string, int>();
            var conversions = new Dictionary<string, int>
            {
                { "Fahrenheit -> Celsjusz", 0 },
                { "Celsjusz -> Fahrenheit", 0 },
                { "Mila -> Kilometr", 0 },
                { "Kilometr -> Mila", 0 },
                { "Funt -> Kilogram", 0 },
                { "Kilogram -> Funt", 0 },
            };

            string[] lines = File.ReadAllLines("stats.txt");

            foreach (string line in lines)
            {
                string from = line.Split("|")[2];
                string to = line.Split("|")[3];

                if (from == "Funt" && to == "Kilogram")
                    conversions["Funt -> Kilogram"]++;
                else if (from == "Kilogram" && to == "Funt")
                    conversions["Kilogram -> Funt"]++;
                else if (from == "Mila" && to == "Kilometr")
                    conversions["Mila -> Kilometr"]++;
                else if (from == "Kilometr" && to == "Mila")
                    conversions["Kilometr -> Mila"]++;
                else if (from == "Fahrenheit" && to == "Celsjusz")
                    conversions["Fahrenheit -> Celsjusz"]++;
                else if (from == "Celsjusz" && to == "Fahrenheit")
                    conversions["Celsjusz -> Fahrenheit"]++;
            } 

            for (int i = 0; i < 3; i++)
            {
                string result = "Funt -> Kilogram";
                foreach (string key in conversions.Keys)
                {
                    if (!popularConversions.ContainsKey(key) && conversions[result] < conversions[key])
                        result = key;
                }
                popularConversions.TryAdd(result, conversions[result]);
            }

            foreach (string key in popularConversions.Keys)
            {
                Console.WriteLine("\n" + key + ": " + popularConversions[key]);
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.IO;
名称空间HelloWorld
{
类PopularConversions
{
公共静态void ReadLogs()
{
var popularConversions=新字典();
变量转换=新字典
{
{“华氏->摄氏度”,0},
{“Celsjusz->Fahrenheit”,0},
{“Mila->km”,0},
{“公里->米拉”,0},
{“Funt->kg”,0},
{“kg->Funt”,0},
};
string[]lines=File.ReadAllLines(“stats.txt”);
foreach(行中的字符串行)
{
string from=line.Split(“|”)[2];
string to=line.Split(“|”)[3];
if(from==“Funt”&&to==“kg”)
换算[“Funt->kg”]+;
否则,如果(从==“千克”到==“Funt”)
换算[“千克->重量”]+;
否则如果(从==“Mila”到==“km”)
换算[“米拉->公里”]+;
否则如果(从==“公里”到==“米拉”)
换算[“公里->米拉”]+;
else if(from==“华氏”&&to==“摄氏度”)
转换[“华氏->摄氏度”]+;
else if(from==“Celsjusz”&&to==“华氏度”)
转换[“Celsjusz->Fahrenheit”]+;
} 
对于(int i=0;i<3;i++)
{
字符串结果=“Funt->kg”;
foreach(conversions.Keys中的字符串键)
{
if(!popularConversions.ContainsKey(键)&&conversions[result]
您需要在问题中包含该文件,或者最好将其内联到代码中

你的算法毫无意义。如果“funt->kiggle”是最流行的转换,那么您将一次又一次地将其“TryAdd”到popularConversions,因此您将在popularConversions中使用一个条目

您需要做的是对转换条目进行排序,并取前3位。我没有时间做这件事,但大致是这样的:

var convList=conversions.ToList();
convList.Sort((kvp1,kvp2)=>{返回kvp1.Value.CompareTo(kvp2.Value);});
convList.Take(3.ToList().ForEach(kvp=>{
Console.WriteLine(“\n”+kvp.Key+”:“+kvp.Value”);
});
conversions.OrderByDescending(x=>x.Value)。取(3)