使用LINQ查询对内部中继器进行排序
我试图列出一组关联,每个关联中都有一个分配给关联的“窗口小部件”。 该列表将包括关联名称和分配给它的任何小部件。 问题是内部窗口小部件列表需要按DisplaySequence排序。
EDMX模型如下:
简化的中继器标记
<div data-type="assn" id=""> -
<asp:Repeater runat="server" ID="rptWidgets" DataSource="" > <li id="">
我试图列出一组关联,每个关联中都有一个分配给关联的“窗口小部件”。 该列表将包括关联名称和分配给它的任何小部件。 问题是内部窗口小部件列表需要按DisplaySequence排序。
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 {'