代码之家  ›  专栏  ›  技术社区  ›  uzay95

具有复合列表的对象数据源

  •  1
  • uzay95  · 技术社区  · 15 年前

    我有一个包含学生信息的列表

    lsStudents = context.GetTable<Student>().Where(p => p.M_Id.Equals(1)).ToList();
    

    我还有一个包含学生课程的

    lsMarks = context.GetTable<Mark>().Where(p => p.M_StudentId.Equals(1)).ToList();
    

    我想将这些列表合并到一个ObjectDatasource,以绑定到中继器。

    <asp:Repeater ID="rpt" runat="server">
        <ItemTemplate>
            <div><% Databinder.Eval(Container.DataItem,"M_StudenName") %></div>
            <div><% Databinder.Eval(Container.DataItem,"M_Mark") %></div>
        </ItemTemplate>
    </asp:Repeater>
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   tvanfosson    15 年前

    您可以在ID字段上加入这两个字段,并将感兴趣的字段选择为一个新的匿名类型。

    var lsStudentWithMarks = context.GetTable<Student>().Where( p => p.M_id.Equals(1))
                                    .Join( context.GetTable<Mark>().Where( p => p.M_StudentId.Equals(1), (o,i) => o.M_Id == i.M_StudentId, (o,i) => new { o.M_StudentName, i.M_Mark } )
                                    .Select( j => new { j.M_StudentName, j.M_Mark } )
                                    .ToList();