先看代码吧<table width="95%" class="mytable" border="1" bordercolor="#B8D0D6" style="border-collapse:collapse; margin:5px">
            <tr>
                <td style="text-align:center">宿舍位置</td>
                <td style="text-align:center">宿舍类型</td>
                <td style="text-align:center">人数</td>
                <td style="text-align:center">满员</td>
                <td style="text-align:center">学生</td>
                <td style="text-align:center">操作</td>
            </tr>
            <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_OnItemDataBound">
            <ItemTemplate>
            <tr class="overandout">
                <td>
                    <asp:Label ID="DomName" runat="server" Text="Label"></asp:Label></td>
                <td>
                    <asp:Label ID="DomType" runat="server" Text="Label"></asp:Label></td>
                <td>
                    <asp:Label ID="DomCount" runat="server" Text="Label"></asp:Label></td>
                <td>
                    <asp:Label ID="DomFull" runat="server" Text="Label"></asp:Label></td>
                <td>
                    <asp:HyperLink ID="DomStu" runat="server">HyperLink</asp:HyperLink></td>
                <td></td>
            </tr>
            </ItemTemplate>
            </asp:Repeater>
        </table>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class Dormitory_Manager : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Repeater1_Bind();
        }
    }
    DataClassesDataContext DC = new DataClassesDataContext();
    protected void Repeater1_Bind()
    {
        var result = from s in DC.宿舍
                     join r in DC.宿舍人 on s.id equals r.宿舍 into g
                     select new
                     {
                         DomName = s.位置,
                         DomType = s.男女,
                         DomCount = s.人数,
                         DomID = s.id,
                         DomStu = g.ToList()
                     };
        Repeater1.DataSource = result;
        Repeater1.DataBind();
    }
    protected void Repeater1_OnItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Label DomName = (Label)e.Item.FindControl("DomName");
        DomName.Text = DataBinder.Eval(e.Item.DataItem, "DomName").ToString();
        Label DomType = (Label)e.Item.FindControl("DomType");
        DomType.Text = DataBinder.Eval(e.Item.DataItem, "DomType").ToString();
        Label DomCount = (Label)e.Item.FindControl("DomCount");
        DomCount.Text = DataBinder.Eval(e.Item.DataItem, "DomCount").ToString();
        HyperLink DomStu = (HyperLink)e.Item.FindControl("DomStu");
        DomStu.Text = DataBinder.Eval(e.Item.DataItem, "DomStu[0].姓名").ToString();
    }
}在CS里,
DomStu.Text = DataBinder.Eval(e.Item.DataItem, "DomStu[0].姓名").ToString();
这里是查询出宿舍人里的第一条记录,可是问题是我宿舍人里不止一个人在某个宿舍里,如果让所有的宿舍人都列出来呢?

解决方案 »

  1.   

    调试下result 数据源,看看数据几条,Linq都忘差不多了,数据源没问题 调试Repeater1_ItemDataBound,
    加载一行数据,进一次。看看加载了几次。
      

  2.   

    DomStu =string.Join(",", g.Select(m=>m.姓名).ToArray()) 
      

  3.   


     var result = from s in DC.宿舍 
                         select new
                         {
                             DomName = s.位置,
                             DomType = s.男女,
                             DomCount = s.人数,
                             DomID = s.id,
                             DomStu = string.Join(",",  DC.宿舍人.Where(r=>r.宿舍==s.id).Select(r=>r.姓名).ToArray())
                         };