生成一个带有键的新列表
本文关键字:列表 新列表 一个 | 更新日期: 2023-09-27 18:00:19
我想创建一个包含关键字和值的新列表
List<object> r = new List<object>();
r.Add("apple");
r.Add("John");
return r;
当你添加观察r时,你会看到
[1] = apple
[2] = John
问题:如何使[1]和[2]成为新密钥?当我添加watch r时,我希望看到[1]被Name取代。如下所示:
Name = apple
TeacherName = John
您的意思是要使用类似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;
对这种数据结构使用列表是完全不正确的。您需要使用Dictionary、NameValueCollection或类似类型。
您可以转换您的列表:
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);
您需要使用Dictionary来完成此操作。不是列表。看见http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
我希望这里不要犯任何语法错误。。。
Dictionary <string, int> r = new Dictionary<string,int>();
r.add("apple",1);
r.add("John",2)
console.WriteLine(r["apple"]);//returns value 1
您的问题不清楚,很难理解。
你的意思是说你想要键而不是索引吗?类似名称而不是1
那么,正如Aliza和Bumble Bee所说,你需要使用字典而不是列表。
下面是的一个小例子
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);