【问题标题】:Convert MyList(,) of Object to String array with LINQ使用 LINQ 将 Object 的 MyList(,) 转换为 String 数组
【发布时间】:2013-03-19 02:13:13
【问题描述】:

我的一个应用程序的性能有一点问题,基本上是:

一个外部系统给了我一个Object(,)这样的大结构。

这个结构每行只有一列

MyData(0,0) = 'COL1-ROW1 | COL2-ROW1 | COL3-ROW1'
MyData(1,0) = 'COL1-ROW2 | COL2-ROW2 | COL3-ROW2'
MyData(2,0) = 'COL1-ROW3 | COL2-ROW3 | COL3-ROW3'
MyData(3,0) = 'COL1-ROW4 | COL2-ROW4 | COL3-ROW4'

MyData(0,1) ' Doesn't exists.

在 LINQ 中有一些方法可以将此结构转换为一维字符串数组吗?

如果你可以根据特定的字符按列进行划分,那就太棒了。

类似这样的:

NewData(0,0) = COL1-ROW1
NewData(0,1) = COL2-ROW1
NewData(0,2) = COL3-ROW1
NewData(1,0) = COL1-ROW2
...
NewData(3,2) = COL3-ROW3

【问题讨论】:

    标签: arrays vb.net linq visual-studio


    【解决方案1】:

    似乎我从自己身上找到了答案;这是我的解决方案:

    Dim vMyData(1000, 0) As Object
    
    For x = 0 To 1000
        vMyData(x, 0) = String.Format("ROW{0}COL1|ROW{0}COL2|ROW{0}COL3|ROW{0}COL4", x)
    Next
    
    Dim vQuery = From TempResult In vMyData
             Select Value = TempResult.ToString.Split("|")
    
    Dim vMyNewArray As New ArrayList(vQuery.ToArray)
    

    现在;是否存在一些方法来修剪Split("|") 的每个值?

    [上一个问题的更新]:

    From TempResult In vMyData Select Value = Array.ConvertAll(TempResult.ToString.Split("|"), Function(vVal) vVal.ToString.Trim)
    

    【讨论】:

    • 您可以在Value 上使用ForEach()。做类似Value.Foreach(Sub(s) s.Trim())的事情。
    • 糟糕,抱歉刚刚看到Value 实际上在查询中,所以这不起作用。但是您可以在之后执行修剪vQuery。您需要先将其转换为列表,尽管使用 ToList()
    • @yu_ominae:同时修剪所有值的方法?由于这个原因,我试图在 LINQ 中实现它。
    • 嗯,它是一个 linQ 扩展,所以在你得到 'vQuery' 之后,你可以在下一行调用 vQuery.ToList().ForEach(Sub(s) s.ForEach(Sub(ss) ss.Trim()))。这将遍历vQuery 中的每个项目并遍历项目中的每个字符串并为您修剪它。但这只是两个For Each 循环并入一行...
    • 我做到了,效果很好:From TempResult In vMyData Select Value = Array.ConvertAll(TempResult.ToString.Split("|"), Function(vVal) vVal.ToString.Trim)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2022-01-17
    • 2018-07-16
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多