给定一个包含多个项目的某种类型的通用IList
,是否有任何方式“裁剪”这个列表,以便只保留第一个x项目,其余部分则被丢弃?在c中裁剪一个列表
1
A
回答
5
现有答案将创建一个新列表,其中包含原始列表中的项目子集。
如果您需要截断就地原始列表,那么这些是你的选择:
// if your list is a concrete List<T>
if (yourList.Count > newSize)
{
yourList.RemoveRange(newSize, yourList.Count - newSize);
}
// or, if your list is an IList<T> or IList but *not* a concrete List<T>
while (yourList.Count > newSize)
{
yourList.RemoveAt(yourList.Count - 1);
}
12
如果你可以使用LINQ,它只是一个做
// Extraact the first 5 items in myList to newList
var newList = myList.Take(5).ToList();
// You can combine with .Skip() to extract items from the middle
var newList = myList.Skip(2).Take(5).ToList();
注意,上面会创建新的列表与五行的问题。如果你只是想迭代第5个元素,你不必创建一个新的列表:
foreach (var oneOfTheFirstFive in myList.Take(5))
// do stuff
1
你有一个非常简单的方法:
IList<T> list = [...]; //initialize
IList<T> newList = new List<T>(max);
for (i=0; i<max; i++) newList.Add(list[i]);
注:MAX必须小于或等于则列表长度(否则你会得到IndexOutOfBoundsException
)
1
如果你只需要与IList<T>
接口做到这一点,那么像这样的解决方案:
for (int i = list.Count - 1; i >= numberOfElementsToKeep; --i) {
list.RemoveAt(i);
}
为了避免在随后的循环迭代中被删除的数据在这里从列表末尾开始反向工作。
相关问题
- 1. 在xna c中裁剪texture2d#
- 2. 在Xcode中裁剪一个UIWebView
- 3. 裁剪/剪裁Sprite
- 4. c中的裁剪图像#
- 5. 如何裁剪一个词?
- 6. 如何“裁剪”一个uiimage?
- 7. 如何在ASP.NET + C#中裁剪一个mp3?
- 8. 裁剪而不是裁剪
- 9. 如何在OpenGL中剪裁渲染(C++)
- 10. 在C#中裁剪和编辑图像
- 11. 使用c在asp.net中裁剪图像#
- 12. 中心裁剪一个numpy数组
- 13. bootstrap 4 - 卡在列中被裁剪
- 14. 在.NET中裁剪一个子控件到一个区域WinForms
- 15. C# - 裁剪透明/空白
- 16. 裁剪图像C#Distorion
- 17. 裁剪图像objective-c
- 18. C#:GDI +图片裁剪
- 19. 裁剪
- 20. 如何在android中编写Mp3裁剪器或裁剪器?
- 21. 在PHP中裁剪图像
- 22. 在matlab中裁剪图像
- 23. 在LinearLayout中裁剪textView
- 24. 在android中裁剪图像
- 25. 在Java中裁剪图像
- 26. 在Matlab中裁剪图像
- 27. 在Richfaces中裁剪图像
- 28. 在iOS中裁剪视频
- 29. 在iPhone中裁剪图像
- 30. 在MKOverlayView中裁剪:drawMapRect
+1爱我一些LINQ – n8wrl 2010-12-08 12:52:13
+1包括事实,你并不需要做.ToList ()除非你明确需要创建一个新的列表。 – 2010-12-08 13:13:05