2016-03-27 6 views
0

内の学校のエンティティを含める必要が 、私は以下のように2つのリストの学校&教室を持って教室のエンティティ

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

今、私は教室の財産として、学校全体のエンティティと一緒にすべての教室を取得する必要があり

私は、参加

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

を試みたが、代わりに学校の単一のプロパティの、私は投影結果で教室のプロパティとして学校全体の実体を必要ですか?

ありがとう、

+0

新しい{L1、L2}を選択し 'のようなselect文でも、L2を含めることができます)' –

+0

それは私に2リストが表示されます。私はl2(学校)を1つの財産として含むl1(教室)、返信ありがとう – user584018

+0

あなたの 'ClassRoom'構造はどのように見えますか? –

答えて

0

さて、あなたは別の方法で行うことができます作業を確認します。アイデアだけではなく、スクールをクラスルームの所有物にする。

次に、必要なことを行い、すべての情報を含む単一のリストを作成できます。

さらに、ClassroomをSchoolの財産にすることもできます。これは、オブジェクト抽象化の観点からはより意味をなさない。その後、学校のすべての教室のリストを簡単に作成することができます。

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

、あなたはこのようなあなたの学校をインスタンス化できます。

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

私は試しましたが、学校= nullになった – user584018

+0

私は何を意味するかを示すためにいくつかのコードを追加しました。 –

0

2つのオプションがあります。

オプション1

1はClassRoomや他のSchoolを表し、次の2つのプロパティを持つ匿名型を持っている、あなたのSelect文で両方のオブジェクトを含めます。

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

オプション2

合わせ特性を有する匿名のデータ・タイプを作成します。

// 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

関連する問題