【问题标题】:How to display in ListView entities with one-to-many relationship如何在具有一对多关系的 ListView 实体中显示
【发布时间】:2016-11-23 23:48:26
【问题描述】:

我有一个包含 3 个 DbSet 和一对多关系的上下文类: (1)地点 - 大学(许多) (1)大学 - 评分(多)

而且我需要在 wpf 的列表视图中显示对所有评级的查询结果。 但是 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 }"/>

【问题讨论】:

    标签: wpf entity-framework xaml data-binding wpf-controls


    【解决方案1】:

    您只从 Ratings 表中选择了字段,那么您希望如何能够显示来自 University 和 Locations 的字段!

    选项 1

    使用导航对象绑定 University 和 Location 列,例如 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();
            }
    

    【讨论】:

    • 您的 EDMX 文件 (EF) 中有导航对象吗?如果是这样,选项1可能是要走的路。它更干净整洁。
    • 修复了选项 2 的问题 - 现在它使用匿名类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2020-01-26
    相关资源
    最近更新 更多