使用LINQ查询对内部中继器进行排序

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

EDMX模型如下: EDMX模型

简化的中继器标记

  <div data-type="assn" id=""> 

-

<asp:Repeater runat="server" ID="rptWidgets" DataSource="" >
    <li id="">

当前查询

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

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

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

我会像这样(未经测试)接近这个:

 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 Widgets{ get;set; } } 

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