选择具有数组中特定字段的不同项目,并以表格形式显示

时间:2016-08-11 03:05:14

标签: c# asp.net vb.net arraylist repeater

我有一个存储过程,返回3列/字段,我将结果集保存在arrayList中。每行包含三个字段ID,name,description。我想从这个数组中获取所有不同的类别到单独的数组或其他一些对象。

例如,如果我的输出有sproc返回的100行,则可能有10行包含category1,20行包含category2,35行包含category3等等。

现在我需要显示如下所示,即显示每个类别下的所有ID。

category1
ID Name
1  A
19 B
32 C

category2
ID Name

10  D
11  T
54  D

依旧......

我可以使用gridview或Repeater或table来显示它。

示例代码:

 Dim a As ArrayList
 a = //values from sproc
 'we need to implement some logic here display like above.

请让我知道如何正确显示。提前谢谢!

1 个答案:

答案 0 :(得分:0)

一些嵌套的linq查询应该会得到你的结果...我已经把这个原则的例子放在一起,但当然它需要适应你的程序(不能说出你的语言和语言) #39;重新使用你的标签/帖子,所以这是在vb.net中):

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim lstAry As New List(Of String())
    lstAry.Add({"1", "a", "d1"})
    lstAry.Add({"1", "b", "d3"})
    lstAry.Add({"2", "c", "d2"})
    lstAry.Add({"3", "a", "d4"})
    lstAry.Add({"3", "a", "d5"})

    Dim distinctCats = lstAry.Select(Function(x) x(0)).Distinct
    If distinctCats IsNot Nothing Then
        For Each distinctcat As String In distinctCats
            Debug.Print("") 
            Debug.Print(distinctcat)
            Dim catmembers = lstAry.Where(Function(x) (x(0) = distinctcat)).Distinct
            If catmembers IsNot Nothing Then
                For Each catmember As String() In catmembers
                    Debug.Print(catmember(1) & "   " & catmember(2))
                Next
            End If
        Next
    End If
End Sub

输出:

1
a   d1
b   d3

2
c   d2

3
a   d4
a   d5

因此,如果您在阵列列表中运行此子逻辑,则应该将结果格式化为与您正在寻找的内容非常接近的格式。首先,我获取不同的类别,然后为每个类别获取不同的数组,并打印每个组。