使用密钥生成新列表

时间:2011-06-26 08:02:16

标签: c# .net list

我想创建一个包含键和值的新列表

List<object> r = new List<object>();  
r.Add("apple");  
r.Add("John");  
return r;

当你用Addwatch r时,你会看到

[1] = apple  
[2] = John

问题:如何使[1]和[2]成为新密钥?当我添加r时,我希望看到[1]被名称替换。如下所示:

Name = apple  
TeacherName = John

6 个答案:

答案 0 :(得分:12)

您的意思是想要使用Dictionary<TKey, TValue>

之类的内容

示例:

Dictionary<string, string> d = new Dictionary<string, string>();
d.Add("Name", "Apple");
d.Add("Teacher", "John");

或者你想要一个更强类型的对象? 在这种情况下,你必须使用你的一个类/结构

class MyObject
{
 public string Name {get; set;}
 public string Teacher {get; set;}
}

然后

var list = new List<MyObject>();
list.Add(new MyObject { Name = "Apple", Teacher = "John" });
list.Add(new MyObject { Name = "Banana", Teacher = "Setphan" });

然后你可以全部

var item = list[0];
var name = item.Name;
var teacher = item.Teacher;

答案 1 :(得分:3)

对这种数据结构使用列表是完全错误的。您需要使用DictionaryNameValueCollection或类似用途。

答案 2 :(得分:2)

您可以转换列表:

List<object> r = new List<object>();
r.Add("apple");
r.Add("John");
r.Add("orange");
r.Add("Bob");

var dict = r.Where((o, i) => i % 2 == 0)
    .Zip(r.Where((o, i) => i % 2 != 0), (a, b) => new { Name = a.ToString(), TeacherName = b.ToString() });

foreach (var item in dict)
{
    Console.WriteLine(item);
}

输出:

{ Name = apple, TeacherName = John }
{ Name = orange, TeacherName = Bob }

然后转换为字典:

var result = dict.ToDictionary(d => d.Name, d => d.TeacherName);

答案 3 :(得分:1)

您需要使用词典来执行此操作。不是清单。 见http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

答案 4 :(得分:1)

我希望我不会在这里犯任何语法错误......

Dictionary <string, int> r = new Dictionary<string,int>();
r.add("apple",1);
r.add("John",2)
console.WriteLine(r["apple"]);//returns value 1

答案 5 :(得分:0)

您的问题不明确且难以理解。

你的意思是说你想要键而不是索引吗?像名字而不是1

那么AlizaBumble Bee表示你需要使用Dictionary而不是List。

这是一个小例子

IDictionary<string, Interval> store = new Dictionary<string, string>();

store.Add("Name","apple");
store.Add("TeacherName ", John);

foreach(KeyValuePair<string, string> e in store)
     Console.WriteLine("{0} => {1}", e.Key, e.Value);