打印字典c的m值#

时间:2017-04-30 06:41:43

标签: c#

public static void DoStuff()
    {
        Dictionary<string, int> myDict = new Dictionary<string, int> {};
        Console.WriteLine("Enter m:");
        int m = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("m="+m);

      //  Console.WriteLine(enteredSurname+": "+ enteredCode);

        foreach (var p in pav)
        {
            int dif = 0;
            code=ChangeToCode(p);

            Console.WriteLine(p+": "+code);

            dif = CodeSimilarity(enteredSurname, p);
            myDict.Add(p, dif);
        }

        foreach (KeyValuePair<string, int> kvp in myDict.OrderByDescending(i=>i.Value))
        {
                Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
        }

        Console.ReadKey();
    }

我已经对字典进行了排序,我需要打印它的m项。例如,如果我输入m = 2,我必须打印两个第一项字典。我尝试添加k = 0并且while(k&lt; m)打印这些值,但这似乎不是正确的方法,因为它只打印字典m次。

3 个答案:

答案 0 :(得分:4)

您可以使用Take,这意味着完全相同:

foreach (var kvp in myDict.OrderByDescending(i=>i.Value).Take(m))

答案 1 :(得分:1)

如果达到m,你必须在循环内增加k变量并跳出循环。

int k = 0;
foreach (KeyValuePair<string, int> kvp in myDict.OrderByDescending(i=>i.Value))
{
    if (k>=m)
        break;
    Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
    k++;
}

答案 2 :(得分:0)

试试这个

K是打印数量

var kvp = myDict.OrderByDescending(i=>i.Value).ToList();    
for (int i=0;i<k;i++) 
{
 Console.WriteLine("Key = {0}, Value = {1}", kvp[i].Key, kvp[i].Value);
}