.NET Split Arraylist基于值

时间:2015-03-05 22:38:11

标签: c# arrays vb.net visual-studio arraylist

我有一个具有该结构的书籍的数据网格视图: 网格有3列出版物,作者和标题。 该网格中可能存在重复记录。 数据中有5种出版物。

我想根据发布分割数据,因此将值分配给5个变量所以我首先排序并将所有值添加到arraylist但我不知道如何拆分它们。

Structure abb
    Public publications As String
    Public author As String
    Public title As String
End Structure

Public arlist As New ArrayList
Public thebooks As New abb

For i As Integer = 0 To Databook.Rows.Count - 2  'databook is the gridview
    With thebooks 
        .publications = CStr(Databook.Rows(i).Cells(1).Value)
        .author = CStr(Databook.Rows(i).Cells(2).Value)
        .title = CStr(Databook.Rows(i).Cells(3).Value)
    End With
    If Not arlist .Contains(thebooks) Then
        arlist .Add(thebooks)
    End If
Next i

现在我制作了arraylist,但在该列表中有5本出版物,其中有一本或多本书。  我希望根据出版物名称(最后有5个变量)有5个arraylists。

我可能走错了第一步,因为我猜首先从datagridview行开始有另一种方法......

注意:VB或C#的答案可以帮助我找到自己的方式。

1 个答案:

答案 0 :(得分:0)

我仍然不知道你想要什么,你的意思是"出版物"可以有以下值:

abb.publications ="书A,书B,书C"?

如果是,你想用它们做什么?或者你只是想通过出版物中的书名将abb分组?这样的事情? (使用LINQ

首先,我认为您可以根据Simon的建议将Public arlist As New ArrayList更改为Public arlist As New List<abb>。然后在你的For:

之后
Dim books = abb.SelectMany(Function(b) b.Split(",")).Distinct().ToArray();
Dim abbByBookName = books.Select(Function(b) arlist.Where(Function(a) a.publications.Contains(b))).ToArray()