我有一个具有该结构的书籍的数据网格视图: 网格有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#的答案可以帮助我找到自己的方式。
答案 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()