我想从我的列表中检索一个元素或它的列表,而不使用for或foreach循环,因为我的列表非常大,我还需要对结果做另一个循环,所以观点算法的复杂性不太好想在彼此内部使用两个循环。
答案 0 :(得分:4)
答案取决于确定您想要的元素的平均值。事实是,如果你有想要找到的元素的索引,那么List将具有O(1)复杂度;否则它将始终具有O(n)复杂度(LINQ与否)。
但是,如果你需要在集合中提取许多元素然后对它们使用循环,那么LINQ将使你能够轻松地只使用一个循环(在集合的所有元素上):
foreach (var element in myCollection.Where(myCondition))
如果您想要找到复杂程度小于O(n)的元素,您应该查看HashSet<T>
和Dictionary<TKey, TValue>
。
但是你的问题不够准确,无法给你一个更具体的答案。
答案 1 :(得分:-3)
如果您可以从列表中获取一个元素而不进行循环,则可以使用LINQ(first,firstOrdefault,Single,SingleOrdefault)函数,这些函数可以为您提供列表中的一个元素,如果您需要多次使用,也可以使用使用ToList结束为cast.all这些函数作为参数lambda表达式。 还要检查这些链接,看看我为什么是正确的:
只要你有一个大尺寸的系列,LINQ就是正确的选择。