使用Linq </xyz>缩小List <xyz>

时间:2009-08-19 22:37:25

标签: c# linq

我想挑选一个列出项目5 - 10并创建一个相同类型的新列表。 使用Linq我想到了:

List<xyz> collection = new <List>();
//fill collection with lots of data
collection.AddRange( ... );

//Downsize here
var q = from e in collection select e;
q.ToArray();
List<xyz> smallcollection = new List<xyz>()
smallcollection = q.Skip(5).Take(5);

我做错了什么?

3 个答案:

答案 0 :(得分:4)

只是var newList = q.Skip(5).Take(5).ToList() ...您现有的代码正在创建大量对象但不使用它们; “ToArray()”被丢弃,“new List<xyz>()”也被丢弃。还有一个“collection.Select(e=>e)”并不是很多......(隐藏在LINQ查询语法中)。

答案 1 :(得分:2)

最后一行应为

smallcollection = q.Skip(5).Take(5).ToList();

答案 2 :(得分:1)

如果原始列表是List<T>,则根本不需要LINQ。

您可以使用GetRange方法,如下所示:

List<xyz> collection = new <List>();
//fill collection with lots of data
collection.AddRange( ... );


List<xyz> smallCollection = collection.GetRange(5, 5);

如果它不是List<T>,您可以像这样使用LINQ:

List<xyz> smallCollection = q.Skip(5).Take(5).ToList();