【问题标题】:C# KeyValuePair<string, int> List - to <string> without preserving the int valueC# KeyValuePair<string, int> List - 到 <string> 而不保留 int 值
【发布时间】:2012-12-09 20:45:56
【问题描述】:

我的初始化是:

List<string> convertedList = new List<string>();  
List<KeyValuePair<string, int>> originalList = new List<KeyValuePair<string, int>>();

我基本上想用originalList中的字符串值填充convertedList
所以如果originalList 有一些项目:["foo",5],["bar",16],["baz",100]
我希望convertedList 包含:["foo"],["bar"],["baz"]
到目前为止,我已经尝试过:

for (int i = 0; i <= originalList.Count; i++)
{
    convertedList.Add(actions.ToString());
}

但没有运气。
哦,请记住,我是新手,这个问题的答案可能非常明显。
感谢您帮助我!
如果我只想转换前 X 个项目,我将如何继续?

【问题讨论】:

  • 使用 Take(N)。例如:convertedList.AddRange(originalList.Take(7).Select(x => x.Key)) 并且不要依赖它再次调用你的问题,以防我现在看到它。

标签: c# list key-value


【解决方案1】:
 List<String> convertedList = originalList.Select(x => x.Key).ToList();

或者:

  convertedList.AddRange(originalList.Select(x => x.Key));

【讨论】:

  • 如果你想追加而不是创建一个新列表,可以使用convertedList.AddRange(originalList.Select(kvp =&gt; kvp.Key));
  • @Scott,我们显然在同一秒更改了答案 :-) 正确评论。
  • 你不需要 ToList()AddRange 版本中,因为 AddRange 接受 IEnumerable&lt;T&gt; 这正是 Select 返回的内容。
【解决方案2】:

坚持原来的语法:

foreach (KeyValuePair<string, int> kvp in originalList)
{
    convertedList.Add(kvp.Key);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2016-05-23
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2010-10-04
    相关资源
    最近更新 更多