2011-09-15 50 views
1

我是Linq的新手。从我的理解LINQ应该只用于查询,但不适用于修改集合或db等RemoveAll的用途()

如果是这种情况,为什么微软提供RemoveAll()扩展?

至于我的理解去RemoveAll()修改集合。

这难道不是对LINQ的目的是什么?

可以请一些解释提供RemoveAll()的原因是什么?

+3

你的理解是不正确的。 –

+0

约翰,我不同意。 LINQ的核心概念是提供函数式编程方面,如不变性(当然还有延迟执行)。 RemoveAll确实违反了这一点。例如,关于为什么没有内置Enumerable.ForEach扩展方法的常见理由是它违反了不变性的原则。但是,对于OP的问题(以及由SLak指出),RemoveAll不是LINQ,根本不是扩展方法。 – Jeff

回答

11

RemoveAll()是从NET 2.0的List<T>类的一部分。
它与LINQ无关;它早于LINQ几年。

List<T>有许多做同样的事情LINQ方法的方法,包括ConvertAllExistsFindFindAllFindLastTrueForAll

它还具有ForEach方法,该方法is not LINQ

+1

并且不要忘了李斯特的反向()......不太一样LINQ的反向().. – 2011-09-15 17:26:20

+0

@jdv:或'排序()';那为什么我没有提到他们。 – SLaks