【问题标题】:Sort Inner Repeater with LINQ query使用 LINQ 查询对内部中继器进行排序
【发布时间】:2013-03-28 13:34:03
【问题描述】:

我正在尝试列出一组关联,每个关联中都有一个分配给关联的“小部件”。该列表将包括关联名称和分配给它的任何小部件。问题是内部小部件列表需要按 DisplaySequence 排序。

EDMX 模型如下:

简化的重复标记

<asp:Repeater ID="rptAssociations" runat="server">
    <ItemTemplate>      
        <div data-type="assn" id="<%# ((Association)Container.DataItem).AssociationID %>">
            <h3 style="margin-top:15px;"><%# ((Association)Container.DataItem).Acronym %> - <%# ((Association)Container.DataItem).Name %></h3> 
            <asp:Repeater runat="server" ID="rptWidgets" DataSource="<%# ((Association)Container.DataItem).AssociationWidgets %>" >
                <HeaderTemplate>                
                    <ul class="WidgetList">
                </HeaderTemplate>
                <ItemTemplate>
                    <li id="<%# ((AssociationWidget)Container.DataItem).DisplaySequence %>"><%# ((AssociationWidget)Container.DataItem).Widget.Name %></li>
                </ItemTemplate>
                <FooterTemplate>
                    </ul>
                </FooterTemplate>
            </asp:Repeater>
        </div>      
    </ItemTemplate>
</asp:Repeater>

当前查询

var associations = (from a in 
    context.Associations.Include("AssociationWidgets")
                        .Include("AssociationWidgets.Widget")
    orderby a.Acronym
    select a).ToList();

rptAssociations.DataSource = associations;
rptAssociations.DataBind();

我目前能够通过我现在拥有的设置获取我正在寻找的数据。但是,我正在寻找获取相同数据的最有效方法,以正确的显示顺序列出小部件。

我应该采用不同的 linq 查询方法吗?

【问题讨论】:

    标签: c# asp.net linq asprepeater


    【解决方案1】:

    我会这样处理(未经测试):

    var associations = 
        context.Associations.Select( a => 
           new {
              //... specific properties you need 
              AssociationId = a.AssociationId,
              Name = a.Name,
              ... etc
              Widgets = a.AssociateWidgets.OrderBy(aw => aw.DisplaySequence)
                                          .Select(aw => aw.Widget)
           }
        );
    

    在这里,您将获得一组匿名类型。您可以使用具体类型,例如

    public class AssociationInfo
    {
        public string Name {get;set;}
        ...
        public IEnumerable<Widget> Widgets{ get;set; }
    }
    

    如有必要,将'new {' 替换为'new AssociationInfo {'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2011-10-31
      相关资源
      最近更新 更多