2017-01-24 23 views
0

我试图创建一个索引这样自己的阶级'的“名单”的访问“排序列表”:索引为自己的阶级“的“名单”的“排序列表”

var vect = new vectAttivita(); 
//insert like this 
vect["John"] = {"math","3cat",30,""}; 
//read like this 
string _class = activity["John"][0].materia; 
//and read like this too 
string _class = activity[0][0].materia; 

public class vectAttivita 
{ 
    public SortedList<string, listAttivita> _Inner = new SortedList<string, listAttivita>(); 

    public void Add(string key) 
    { 
     _Inner.Add(key, null); 
    } 

    public SortedList<string, listAttivita> this[int i] 
    { 
     get 
     { 
      return _Inner.Values[i]; // <-- Error 1 
     } 
     set 
     { 
      _Inner.Values[i] = value; // <-- Error 2 
     } 
    } 

} 

public class listAttivita 
{ 
    //public string nome; 
    public List<Attivita> listAtt = new List<Attivita>(); 
    public listAttivita() 
    { 
     //this.nome = nomeAttivit; 
    } 
    public void Add(string materia, string ufc, ushort ore, string aulaLabo) 
    { 
     listAtt.Add(new Attivita(materia, ufc, ore, aulaLabo)); 
    } 
    public void Add(Attivita att) 
    { 
     listAtt.Add(att); 
    } 

} 

public class Attivita 
{ 
    public string materia; 
    public string ufc; 
    public ushort ore; 
    public string aulaLab; 
    public Attivita(string materia, string ufc, ushort ore, string aulaLabo) 
    { 
     this.materia = materia; 
     this.ufc = ufc; 
     this.ore = ore; 
     this.aulaLab = aulaLabo; 
    } 

} 

的英文是::

我的代码,因为在这一点上最后公布更新后的“CS0029不能隐式转换类型......”

ERROR1:Errore CS0029非戊不可能性convertire在摩多implicito IL TIPO 'Estrazione_Excel01.listAttivita'in' System.Collections.Generic.SortedList: '在”

误差2 Errore CS0029非戊不可能性convertire在摩多implicito IL TIPO' System.Collections.Generic.SortedList Estrazione_Excel01.listAttivita“

如何CON我从脱身这个 ?

+0

你从哪里得到“matrAttivita”?我在链接中看不到它是字典值中的嵌套字典。也不是用户创建的类Attivita。此外,标题和单词2-dim是错误的,您试图处理数组数组,或者另一个术语是Jagged数组。 [数组中的差异](http://stackoverflow.com/questions/597720/what-are-the-differences-between-a-multidimensional-array-and-an-array-of-arrays) – Edward

+0

你是对的,我编辑,谢谢! matrAttivita由我编写的代码链接。 但我想我找到了我需要的覆盖。 –

+0

我会问你想通过创建一个数组的数组来完成什么;因为有时人们会以某种错误的方式去做事。如果你只是想要一个不同的东西(字符串/整数)的“列表”。我个人会创建一个说雇员的类。然后使用Dictionary ,这不仅可以轻松索引键,而且可以包含可能包含的所有内容。 – Edward

回答

1

结帐Indexers以及如何实施它们。

+0

谢谢你安德鲁,你透露我的方式! –

+0

我现在添加索引器...但仍然有错误...就像您在上面编辑的问题中看到的那样。 –

0

我只是摆脱了SortedList类,只保留一个添加methond在List类加入一个Attivita。然后,为了简单起见,在将其添加到字典中的密钥将是人的名字之前创建Attivita。

Dictionary<string,listAttivita> students = new Dictionary<string,listAttivita>(){}; 
Attivita newActivity = new Attivita("math","3cat",30,""); 
string studentName ="John"; 

旁边添加一个学生在你的字典,但首先你需要检查学生的存在,或者add方法会产生一个错误。这部分很可能在按钮的on_click方法中,并且以前的信息将由用户填充的windows文本框填充。

if(students.ContainsKey(studentName)) 
    students[studentName].Add(newActivity); 
else 
{ 
    students[studentName] = new listAttivita(){}; 
    students[studentName].Add(newActivity); 
} 

所以现在如果你想返回一个特定的学生在一个排序的顺序然后所有的活动。

var studentActivity = students.Where(x => x.Key==studentName).First().Value.listAtt.OrderBy(x => x.materia); 
foreach(var parts in studentActivity) 
    Console.WriteLine("Materia:{0} UFC:{1} ORE:{2} aulaLab:{3}", parts.materia, parts.ufc, parts.ore, parts.aulaLab); 
+0

@Andrea Canton它很好的礼仪与选择一个可以帮助你解决问题的答案。 – Edward