使用linq查询创建Groupedby HTML表

时间:2016-01-14 14:53:23

标签: sql-server vb.net linq

使用以下内容:Windows 7,Visual Studio 2013,VB,Bootstrap,Jquery

我是网页设计的新手。

我正在尝试创建一个列表/表格......任何内容......以显示由其部门分组的设备列表。我目前只是列出了部门。表中有4条记录: 部门01中有两个记录,部门02中有两个记录 每个部门都有两台设备。 下面的代码是拉入创建同一部门的多个列表的所有记录:

 - 01
 - 01
 - 02
 - 02

我想:

 - 01
 - Equipment1
 - Equipment2
 - 02
 - Equipment1
 - Equipment2

该行:

mUserHistorys = mUserHistorys.OrderBy(Function(x) x.Department_Selected).ToList()

是我从加载页面时加载的内存中的数据中提取的。 我如何获得独特的部门?我尝试了Distinct和GroupBy,但我不相信我正确地放置它们。

Private Sub RenderPage()

Dim HTMLString As String = ""
Dim SortKey As String = "A"
Dim CompareValue As String = ""
Dim SubmitString = ""

mUserHistorys = mUserHistorys.OrderBy(Function(x) x.Department_Selected).ToList()
For Each p In mUserHistorys
    SubmitString = "Bookmark:" & p.Department_Selected & "-" & p.Equipment_Selected

    HTMLString &= "<table> " & vbCrLf
    HTMLString &= "<td>" & p.Department_Selected & "</td>" & vbCrLf
    HTMLString &= "</table> " & vbCrLf       

Next
Me.literalListHTML.Text = HTMLString
End Sub

2 个答案:

答案 0 :(得分:0)

var info = (from b in mUserHistorys
                        where b.Department_Selected != null
                        select b).ToList()
                        .GroupBy(x => x.Department_Selected)
                        .Select(y => y.First())
                        .OrderBy(z => z.Department_Selected);

我很幸运使用这个linq查询来获得类似的东西。如果它已经是对象列表,则可以从.GroupBy开始,即

mUserHistorys.GroupBy(x => x.Department_Selected)
                        .Select(y => y.First())
                        .OrderBy(z => z.Department_Selected);

答案 1 :(得分:0)

@stuggyg 我最终得到的就是这个。我现在唯一的问题是装备没有提升。但是,非常感谢你的帮助!它帮助我提出了这个代码:

    Private Sub RenderPage()

    Dim HTMLString As String = ""
    Dim SortKey As String = "A"
    Dim CompareValue As String = ""
    Dim SubmitString = ""

    Dim Depts = From dept In mUserHistorys
                Select dept.User_ID, dept.Department_Selected, dept.Equipment_Selected
                Where User_ID = _user.User_ID
                Order By Equipment_Selected Ascending
                Group By DeptName = Department_Selected
                Into EqInDept = Group
                Order By DeptName

    HTMLString &= "<div class=""container-float""> " & vbCrLf
    For Each p In Depts
        HTMLString &= "<a id=""deptheader"" class=""list-group-item"">" & p.DeptName & "" & vbCrLf

        For Each r In mUserHistorys
            SubmitString = "Bookmark:" & r.Department_Selected & "-" & r.Equipment_Selected
            If r.Department_Selected = p.DeptName Then
                HTMLString &= "<a id=""equiplist"" class=""list-group-item"" <button id=""iconButton"" onclick=""SubmitNextForm('" & SubmitString & "');""  type=""button"" class=""btn btn-normal""><span class=""glyphicon glyphicon-remove-sign"" ></span></button>" & r.Equipment_Selected & "</a>" & vbCrLf
            End If
        Next
        HTMLString &= "</a> " & vbCrLf
    Next
    HTMLString &= "</div> " & vbCrLf

    Me.literalListHTML.Text = HTMLString
End Sub