2016-11-28 72 views
0

我想從兩個相關的表中使用LINQ to Entity模型來填充我的WPF dataGridView。 試圖顯示這兩個表如何使用LINQ查詢從相關表中填充WPF DataGridView?

enter image description here

預期輸出:

enter image description here

但時將BatchName列不顯示任何數據。我使用下面的LINQ查詢:

public List<StudentViewModel> SelectNamesAndBatches() 
     { 
    var students = (from s in db.Students 
          join b in db.Batches 
          on s.BatchId equals b.Id 
          select new StudentViewModel 
          { 
           Name = s.Name, 
           Gender = s.Gender, 
           Age = s.Age, 
           BatchId = b.Id, 
           BatchName = b.BatchName 
          }).ToList(); 

      return students; 
} 

我datagridview的XML代碼:

<DataGrid Name="dg" AutoGenerateColumns="False" Width="500" Height="200" > 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Name" Width="100" Binding="{Binding Name}"> 

       </DataGridTextColumn> 

       <DataGridTextColumn Header="Age" Width="50" Binding="{Binding Age}"> 

       </DataGridTextColumn> 

       <DataGridTextColumn Header="Gender" Width="100" Binding="{Binding Gender}"> 

       </DataGridTextColumn> 

       <DataGridTextColumn Header="Batches Name" Width="100" Binding="{Binding Batches.BatchName}"> 

       </DataGridTextColumn> 

      </DataGrid.Columns> 
     </DataGrid> 

這是怎麼了填充的DataGridView:

dg.ItemsSource = new StudentFactory().SelectNamesAndBatches(); 

請指導我什麼,我可能會做錯誤?

回答

0

NiazBro,試試這個:

var students = (from s in db.Students.Include("Batches") 
          select new StudentViewModel 
          { 
           Name = s.Name, 
           Gender = s.Gender, 
           Age = s.Age, 
           BatchId = s.Batches.Id, 
           BatchName = s.Batches.BatchName 
          }).ToList(); 

      return students; 

這是假設你的學生模型表示這個人跟批次多個環節。

+0

謝謝@Ibrahim,經過一番改變後,它工作。你能給我一個與此相關的教程鏈接嗎?我無法理解這些東西。 – NiaziBro

+0

Niaz ...看看這個:http://www.entityframeworktutorial.net/ –