From ... In ...在C#中选择

时间:2010-10-19 10:07:51

标签: c# linq performance

是否存在与使用

等表达式相关的任何缺点或性能下降
from i in Enumerable.Range(1, Math.Min(strTexto.Length, tamMax) + 1)
                select Tuple.Create(strTexto.Substring(0, i - 1), strTexto.Substring(i - 1))
在C#中

?建立像

这样的“硬编码查询”是否更可取
foreach (Int32 IntTmp in SomeListWithTheRange)
    SomeListWithTheTuples.Add(new Tuple<String, String> (strTexto.Substring(0, i - 1), strTexto.Substring(i - 1)))

虽然第一眼看起来更具可读性,但我注意到这种查询会变得非常慢......例如,第一个查询需要11毫秒才能执行,而第二个查询只需要1毫秒。我对吗?只是想确保,因为我需要实现大量这类查询。

1 个答案:

答案 0 :(得分:3)

第一种方法的表现与第二种方法一样好。当你说你“注意到这种查询会变得很慢”时 - 你能提供更多细节吗?你当然可以编写慢LINQ查询,但这是适当使用LINQ的问题。

请注意,您的两个代码示例目前根本不相同 - 第一个只是构建一个查询,但根本不使用它。你的第二个似乎是反复调用Concat,当你迭代它时,变慢,因为你最终会得到大量的迭代器。

如果你能解释一下你实际上要做什么,那将会有很大的帮助。