.net 要在字符串上使用LINQ执行子字符串,是否必须更正语法?

.net 要在字符串上使用LINQ执行子字符串,是否必须更正语法?,.net,linq,.net,Linq,这段代码可以工作,但linq one比子字符串要多花1300%的时间 我有两个问题 我有正确的LINQ语法吗? 我应该继续使用string.substring吗? 你一定要坚持使用Substring。它是为这种情况量身定制的,并且不需要所有额外的LINQ 仅仅因为你可以用LINQ做点什么并不意味着这一定是个好主意。当您使用的数据类型已经定义了您想要在其上定义的确切操作时,使用额外的抽象层有些毫无意义。您肯定应该坚持使用子字符串。它是为这种情况量身定制的,并且不需要所有额外的LINQ 仅仅因为你可

这段代码可以工作,但linq one比子字符串要多花1300%的时间

我有两个问题

我有正确的LINQ语法吗? 我应该继续使用string.substring吗?
你一定要坚持使用Substring。它是为这种情况量身定制的,并且不需要所有额外的LINQ


仅仅因为你可以用LINQ做点什么并不意味着这一定是个好主意。当您使用的数据类型已经定义了您想要在其上定义的确切操作时,使用额外的抽象层有些毫无意义。

您肯定应该坚持使用子字符串。它是为这种情况量身定制的,并且不需要所有额外的LINQ


仅仅因为你可以用LINQ做点什么并不意味着这一定是个好主意。当您使用的数据类型已经定义了您想要的确切操作时,使用额外的抽象层有些毫无意义。

1是的,这是一种方法。我肯定还有其他人。 2是的。当然

Linq需要更长的时间,因为它做的更多。它必须创建一个表达式树,用迭代器计算表达式,迭代器调用字符串枚举器沿着字符串移动所需的字符数,然后为第二个方法调用再次执行所有操作,然后将整个批次转换为数组,然后创建一个新字符串并将数组处理为新字符串

子字符串调用所要做的只是一点指针算法,以提取字符串的中间部分并返回新字符串

这是一个绝对糟糕的Linq使用的完美例子。Linq用于帮助开发人员处理可枚举或可查询数据的复杂查询,而不是处理字符串。在这里,Linq的开销远远超过了可读性方面的任何好处。坚持使用子字符串调用


[编辑:更正Marc评论后的linq详细信息]

1是的,这是一种方法。我肯定还有其他人。 2是的。当然

Linq需要更长的时间,因为它做的更多。它必须创建一个表达式树,用迭代器计算表达式,迭代器调用字符串枚举器沿着字符串移动所需的字符数,然后为第二个方法调用再次执行所有操作,然后将整个批次转换为数组,然后创建一个新字符串并将数组处理为新字符串

子字符串调用所要做的只是一点指针算法,以提取字符串的中间部分并返回新字符串

这是一个绝对糟糕的Linq使用的完美例子。Linq用于帮助开发人员处理可枚举或可查询数据的复杂查询,而不是处理字符串。在这里,Linq的开销远远超过了可读性方面的任何好处。坚持使用子字符串调用


[编辑:更正Marc评论后的linq详细信息]

等等,什么?我以为LINQ是每个问题的答案…:等等,什么?我以为LINQ是每个问题的答案…:LINQ to对象不使用表达式树-它直接编译为匿名方法。但是是的,这里不需要使用LINQ-p@Marc:非常正确。我基于Linq到sql做了一个假设。在reflector中检查了它,它只使用迭代器和枚举器做了大量工作。将答案更正为match.LINQ-to-Objects不使用表达式树-它直接编译为匿名方法。但是是的,这里不需要使用LINQ-p@Marc:非常正确。我基于Linq到sql做了一个假设。在reflector中检查了它,它只使用迭代器和枚举器做了大量工作。将答案更正为匹配。
    Dim myString As String = "1234567890"
    Dim Part As String = ""

    Part = myString.Substring(2, 2) '34
    Part = New String(myString.Skip(2).Take(2).ToArray) '34