使用Linq;我如何做Take的“对立面”?
也就是说,不是获取前n个元素,例如
aCollection.Take(n)
我想要得到除最后n个元素之外的所有内容。就像这样
aCollection.Leave(n)
(不要问为什么:-)
编辑
我想我可以这样做,aCollection.TakeWhile((x, index) => index < aCollection.Count - n)
或者以扩展的形式
public static IEnumerable<TSource> Leave<TSource>(this IEnumerable<TSource> source, int n)
{
return source.TakeWhile((x, index) => index < source.Count() - n);
}
但是在Linq to SQL或SQL的情况下,如果生成的NHibernate能够处理它并生成类似于(对于SQL Server/T-SQL)的东西,那就更好了。
SELECT TOP(SELECT COUNT(*) -@n FROM ATable) * FROM ATable
或其他一些更聪明的SQL实现。
我想没有比这更好的了?(但编辑实际上不是问题的一部分。)
https://stackoverflow.com/questions/10247804
复制相似问题