2016-03-27 32 views
0

içinde okul varlığını dahil gerekir , aşağıda gibi 2 listeleri Okul & Sınıf sahip sınıf varlık

public static class WebApiData 
{ 
    public static List<School> GetAllSchools() 
    { 
     List<School> schools = new List<School> 
     { 
      new School 
      { 
       id = 1, 
       name = "Fort Craig Elementary", 
       principal = "Michelle Thorne" 
      }, 
      new School 
      { 
       id = 2, 
       name = "Edgewood Elementary", 
       principal = "Audrey Hills" 
      } 
     }; 

     return schools; 
    } 

    public static List<Classroom> GetAllClassrooms() 
    { 
     List<Classroom> classrooms = new List<Classroom> 
     { 
      new Classroom 
      { 
       id = 1, 
       name = "Mrs. Cox's 2nd Grade", 
       teacher = "Beth Cox", 
       school_id = 1 
      }, 
      new Classroom 
      { 
       id = 2, 
       name = "Mr. Elliott's Kindergarten", 
       teacher = "Martin Elliott", 
       school_id = 1 
      }, 
      new Classroom 
      { 
       id = 3, 
       name = "Mrs. Smith's 1st Grade", 
       teacher = "Amanda Smith", 
       school_id = 2 
      } 
     }; 

     return classrooms; 
    } 
} 

Şimdi Sınıf bir özelliği olarak tüm okul varlık ile birlikte tüm Sınıfları almak gerekir

?

ben katılmak çalıştı

,

  var result = from l1 in classrooms 
        join l2 in schools 
         on l1.school_id equals l2.id 
        select l1; 

Ama bunun yerine okulun tek özelliğinin, ben projeksiyon sonucunda sınıfın bir özelliği olarak tüm okul varlık gerek?

Sağol,

+0

sizin gibi seçkin açıklamada da l2 içerebilir 'yeni {L1, L2} seçin)' –

+0

bana 2 listesini verecektir. ama ben l1 (sınıf) tek bir özellik olarak l1 (okul) içerir istiyorum, teşekkürler için teşekkürler – user584018

+0

Senin 'ClassRoom 'yapısını nasıl görünüyor? –

cevap

0

Peki çalışma Kontrol, farklı bir şekilde yapabilirdi. School'u yalnızca kimliğe sahip olmak yerine Classroom'a ait bir özellik haline getirin.

Ardından istediğiniz bilgileri yapabilir ve tüm bilgileri içeren tek bir liste oluşturabilirsiniz. Veya daha da iyisi, Classroom'u okulun bir özelliği haline getirin. Bu, bir nesnenin soyutlama açısından daha mantıklı. Daha sonra okuldaki tüm sınıfların listesini kolayca oluşturabilirsiniz.

your School could look like this : 

public class School 
      { 
       public int Id { get; set; } 
       public string Name { get; set; } 

       public List<Classroom> Classrooms { get; set; } 
      } 

o zaman bu gibi okullara örneğini verebilir:

public static List<School> GetAllSchools() 
     { 
      List<School> schools = new List<School> 
     { 
      new School 
      { 
       Id =1 , 
        Name = "1", 
        Classrooms = new List<Classroom> { new Classroom { Id = 1, Name = "1" }, new Classroom { Id = 2, Name = "2" } } 
      }, 
      new School 
      { 
       Id =2 , 
        Name = "2", 
        Classrooms = new List<Classroom> { new Classroom { Id = 3, Name = "3" }, new Classroom { Id = 4, Name = "4" } } 

      } 
     }; 

      return schools; 
     }  
+0

Denedim ama okulu = – user584018

+0

aldım Ne demek istediğimi göstermek için bir kod ekledim, bu yardım mı yoksa daha fazlasına mı ihtiyacınız var? –

0

İki seçeneğiniz vardır.

1 sizin Select açıklamada hem nesneyi dahil Opsiyon, iki özelliklere sahip bir anonim tip, tek ClassRoom ve diğer School temsil var.

// Approach 1 
     var results = from l1 in classrooms 
       join l2 in schools 
        on l1.school_id equals l2.id 
      select new {l1, l2 }; 

Seçenek 2

Birleştirilen özelliklere sahip bir anonim veri türü oluşturma.

// Appraoch 2 
     var results = from l1 in classrooms 
       join l2 in schools 
        on l1.school_id equals l2.id 
      select new { 
          Id= l1.id, 
          Name = l1.name, 
          Teacher = l1.teacher, 
          SchoolId = l2.id, 
          SchoolName = l2.name, 
          Principal = l2.principal 
         }; 

Example

İlgili konular