【问题标题】:C# create an array from specific values of dictionnaryC#从字典的特定值创建一个数组
【发布时间】:2017-08-26 16:54:00
【问题描述】:

我一直在寻找答案,但由于某些原因,我发现的所有内容都与我的用途不符。 我对c#不是很熟悉,我有一本字典

public Dictionary<int, int> deck = new Dictionary<int, int>();

我想取这个字典的十个第一个值并将它放在一个像

这样的数组中
public string[] cardP1 = new string[10];

,我尝试使用 .Take 或 .CopyTo 进行一些操作,我也使用了 Values,但仍然无法正常工作。

【问题讨论】:

  • 你想在你的阵列中做什么?键、值还是两者兼而有之?
  • 我要key和value,key是卡号,value是花色
  • 您的字典键和值是整数,您真的希望它们在字符串中吗?
  • 没必要,只需要提取字典的前十个值,但我想如果我将它保存为字符串[],我下次使用会更好
  • 您的问题不完整和/或不正确。第一个值是什么意思? .NET Dictionary 不保留顺序。你想对键进行排序吗?您有 Dictionary 但想放入字符串数组。干什么用的?

标签: c# arrays dictionary


【解决方案1】:

您可以像这样非常轻松地使用 LINQ:

var q = (from p in deck.Keys select p).Take(10).ToArray();

如果您想要值,您可以将 deck.keys 更改为 deck.values

它会给你前 10 个键。

编辑或者正如 Jakub Dąbek 评论的那样:

var items  = deck.Keys.Take(10).ToArray();

【讨论】:

  • 或者只是做deck.Keys.Take(10).ToArray();
【解决方案2】:

检查一下:

if(deck.Count>=10)
{
    cardP1 = deck.Take(10).Select(x => x.Value.ToString()).ToArray();
}

或者,如果您想要一些自定义字符串,例如:Card 1: 4

你可以选择:

cardP1 = deck.Take(10).Select(x => string.Format("Card {0}: {1}", x.Key, x.Value) ).ToArray();

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 2012-03-09
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多