2016-11-23 9 views
0

3 DbSets 및 일대 다 관계가있는 컨텍스트 클래스가 있습니다. (1) 위치 - 대학 (many) (1) University - Rating 많은)일대 다 관계로 ListView 엔터티에 표시하는 방법

그리고 wpf 내 목록보기의 모든 평가에 쿼리 결과를 표시해야합니다. 그러나 listView는 대학 및 위치의 입력란을 표시하지 않습니다.

ListView

쿼리 예 :

using (var c = new Context()) 
     { 
      ratingListView.ItemsSource = (from w in c.Ratings 
        where w.Year.Value == 2012 
        select w).ToList(); 
     } 

ListView에 바인딩 : 등급 테이블에서

<GridViewColumn Header="Rank" Width="Auto" DisplayMemberBinding="{Binding WorldRank}"/> 
        <GridViewColumn Header="Institution" Width="120" DisplayMemberBinding="{Binding Unviversity}"/> 
        <GridViewColumn Header="Location" Width="60" DisplayMemberBinding="{Binding Location }"/> 
        <GridViewColumn Header="National&#x0a; Rank" Width="60" DisplayMemberBinding="{Binding NationalRank }"/> 
        <GridViewColumn Header=" Quality of &#x0a; Education" Width="70" DisplayMemberBinding="{Binding QualityOfEducation}"/> 
        <GridViewColumn Header=" Alumni of &#x0a;Employment" Width="70" DisplayMemberBinding="{Binding AlumniEmployment}"/> 
        <GridViewColumn Header=" Quality of &#x0a; Faculty" Width="70" DisplayMemberBinding="{Binding QualityOfFaculty}"/> 
        <GridViewColumn Header="Publications" Width="70" DisplayMemberBinding="{Binding Publications }"/> 
        <GridViewColumn Header="Citations" Width="60" DisplayMemberBinding="{Binding Citations }"/> 
        <GridViewColumn Header=" Broad &#x0a;Impact" Width="50" DisplayMemberBinding="{Binding BroadImpact}"/> 
        <GridViewColumn Header="Patents" Width="60" DisplayMemberBinding="{Binding Patents }"/> 
        <GridViewColumn Header="Score" Width="60" DisplayMemberBinding="{Binding Score }"/> 

답변

1

당신 선택된 필드, 그래서 당신은에서 필드를 표시 할 수 있기를 기대 어떻게 대학과 위치!

옵션 1 :

바인딩 대학 및 University.UniversityNameUniversity.Location.LocationName으로 탐색 객체를 사용하여 위치 열, (당신의 전체 구조 EF를 제공하지 않은 것처럼 나는 멤버 이름을 만든).

옵션 2는 :

linq 쿼리의 대학 및 위치를 포함합니다.

using (var c = new Context()) 
     { 
      ratingListView.ItemsSource = (from w in c.Ratings 
             join u in c.Universities 
             on w.UniversityID equals u.ID 
             join loc in c.Locations 
             on u.LocationID equals loc.ID 
        where w.Year.Value == 2012 
        select new {loc.Location, u.University, w.field1, w.field2}).ToList(); 
     } 
+0

감사합니다, 작동하지 않습니다 : select w, u, loc – CepBuch

+0

EDMX 파일 (EF)에 탐색 개체가 있습니까? 그렇다면 옵션 1이 도움이 될 수 있습니다. 그것은 깨끗하고 깨끗합니다. –

+0

옵션 2로 인한 문제 수정 - 이제는 익명 유형을 사용합니다. –