Con*_*ark 4 .net c# changeset tfs-sdk tfs2010
长话短说.分析后,此命令占用处理的0.1%
var ChangesetList = TFSConnection.GetInstance().GetVersionControl().QueryHistory
(Path, VersionSpec.Latest,0, RecursionType.Full, "", null,
VersionSpec.Latest, Int32.MaxValue,true, false);
Run Code Online (Sandbox Code Playgroud)
这一个,65.7%.(有趣的是,内部的所有处理只消耗3%)
foreach (Changeset changeset in ChangesetList)
Run Code Online (Sandbox Code Playgroud)
我得到我的清单需要几秒钟......发生了什么事?为什么在列表中迭代这么慢?
有没有更快的方法来做到这一点?
编辑:另外,为什么我不能直接将其转换为List<Changeset>?
小智 10
调用VersionControlServer.QueryHistory返回一个IEnumerable,所以我假设它就像在LINQ to Objects中,并且只要迭代IEnumerable(关键字:延迟执行)就会执行实际查询.
您无法将结果分配给List,因为返回值是非泛型版本IEnumerable.调用Cast<Changeset>()或OfType<Changeset>()结果返回一个通用IEnumerable<Changeset>.之后,你可以调用ToList()并获得一个List<Changeset>.ToList()迭代,IEnumerable<T>所以它就像foreach一样,占用了大部分时间.
我提到的方法是扩展方法,位于System.Linq命名空间中.