我有一些项目的多个字符串列表
想要将每个项目合并在一起,如下所示
Dim _rsltitm = Nothing
For Each _itm1 In _lst1
For Each _itm2 In _lst2
For Each _itm3 In _lst3
_rsltitm &= vbNewLine & _itm1 + _itm2 + _itm3
Next
Next
Next
上面的代码工作正常,但我有8个以上的列表,有时甚至11个
所以我需要linq将多个字符串项列表组合在一起
我正在尝试这样,但我不能
Dim _rslt = From itm In _lst1 Select (Function(x) From itm2 In _lst2 Select (Function(d) x & d))
我刚刚测试了这段代码,它似乎可以满足您的要求:
Dim list1 As New List(Of String) From {"1", "2", "3"}
Dim list2 As New List(Of String) From {"A", "B", "C"}
Dim list3 As New List(Of String) From {"7", "8", "9"}
Dim list4 As New List(Of String) From {"X", "Y", "Z"}
Dim lists = {list1, list2, list3, list4}
Dim result = lists.Aggregate(Function(current, list)
Dim combinedList As New List(Of String)
For Each prefix In current
combinedList.AddRange(From suffix In list Select prefix & suffix)
Next
Return combinedList
End Function)
您只需将所有列表添加到该lists
数组中,result
最后应包含所需的结果。
我觉得Lambda的身体应该可以进一步被LINQified了,但是我最初的尝试没有用,所以我很快就放弃了。如果您想花更多时间,欢迎您。
编辑:
这是一个函数:
Private Function CombineLists(ParamArray lists As List(Of String)()) As List(Of String)
Return lists.Aggregate(Function(current, list)
Dim combinedList As New List(Of String)
For Each prefix In current
combinedList.AddRange(From suffix In list Select prefix & suffix)
Next
Return combinedList
End Function)
End Function
在我的示例中,我可以这样称呼:
Dim result = CombineLists(list1, list2, list3, list4)
或者像这样:
Dim lists = {list1, list2, list3, list4}
Dim result = CombineLists(lists)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句