2011-06-26 12 views
5

chciałbym utworzyć nową listę z klucza i wartościwygenerować nową listę z kluczem

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

gdy u Addwatch R, widać

[1] = apple 
[2] = John 

pytania: Jak zrobić [1] i [2] być nowym kluczem? Kiedy dodam zegarek r, chciałbym, aby [1] zostało zastąpione przez Name. coś jak poniżej:

Name = apple 
TeacherName = John 
+2

Twoje pytanie jest bardzo trudna do zrozumienia - wyczyść to, co próbujesz powiedzieć. Wygląda na to, że chcesz używać słownika, który umożliwia użycie pary klucz/wartość – Prescott

Odpowiedz

10

Czy oznacza chcesz użyć czegoś jak Dictionary<TKey, TValue>

przykład:

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

lub chcesz obiekt silniej wpisane? w tym przypadku musiał użyć jednej klasy/struct

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

Następnie

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

wtedy można wszystko to

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

Twoje pytanie nie jest jasne i trudne do zrozumienia.

Czy chcesz powiedzieć, że chcesz kluczy zamiast indeksów? Podobnie jak nazwa zamiast 1

No cóż, jako że Aliza i Bumble Bee powiedziały, że musisz użyć Słownika zamiast Listy.

Oto mały przykład

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); 
1

Mam nadzieję, że nie popełnić żadnych błędów składni tutaj ...

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

można przekształcić listę:

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); 
} 

Wyjście:

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

A następnie przekształcić do słownika:

var result = dict.ToDictionary(d => d.Name, d => d.TeacherName); 
Powiązane problemy