2011-06-26 7 views
5

me gustaría crear una nueva lista con clave y los valoresGenerar una nueva lista con la tecla

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

cuando u Addwatch la r, verá

[1] = apple 
[2] = John 

preguntas: ¿Cómo puedo hacer la tecla [1] y [2] para ser nueva? Cuando agregue el reloj, me gustaría ver que [1] se reemplaza por Nombre. algo como a continuación:

Name = apple 
TeacherName = John 
+2

Su pregunta es muy difícil de entender - intenta aclarar lo que está tratando de decir. Parece que quieres un diccionario, que te permite usar un par de clave/valor – Prescott

Respuesta

10

¿Quiere decir que desea utilizar algo así como Dictionary<TKey, TValue>

ejemplo:

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

o quieres que un objeto más inflexible? en este caso se tiene que usar su una clase/estructura

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

Entonces

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

entonces usted puede todo lo que

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

su pregunta no está clara y difícil de entender.

¿Quiere decir que quiere claves en lugar de índices? Como Nombre en lugar de 1

Bueno, como Aliza y Bumble Bee han dicho que necesita utilizar un diccionario en lugar de una lista.

Aquí hay un pequeño ejemplo

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

espero yo no cometer ningún error de sintaxis aquí ...

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

Puede transformar su lista:

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

Salida:

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

Y luego transformar al diccionario:

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