我有一个元素列表,但是如果列表元素的数量大于 4,我想删除所有元素,但仅将前 4 个保留在列表中。
例子:
列表<> - 1、2、3、4、5、6、7、8
新列表应该是 - 1,2,3,4
我正在考虑使用 List.RemoveAll() 但不确定在括号中放什么
期待一些帮助....
史蒂文
为什么不使用List.RemoveRange
:
if (list.Count > 4)
{
list.RemoveRange(4, list.Count - 4);
}
(假设您想改变现有列表。如果您乐于创建一个新序列,我肯定会list.Take(4)
按照 Adam 的建议使用,无论是否ToList
调用。这些天我倾向于构建查询而不是改变现有集合。 )
或者,您可以创建一个包含旧项目的新列表:
var firstFour = myList.Take(4).ToList();
但是,这会创建一个新列表,因此与从原始列表中删除不同。
或者,如果您需要做的只是迭代它们,只需Take
不在ToList
a 内foreach
:
foreach (var item in myList.Take(4))
然后,您将获得延迟执行,并且不会在创建列表上花费内存。
顺便说一句,使用 linq 和 linq 扩展,我发现代码更明确地声明了您的意图list.Take(4)
:读起来比list.RemoveRange(4, list.Count - 4);
一目了然容易得多。代码中的意图对于维护和团队工作非常重要。
尝试这个
List<string> lstTest = new List<string>();
lstTest.Add("test1");
lstTest.Add("test2");
lstTest.Add("test3");
lstTest.Add("test4");
lstTest.Add("test5");
lstTest.Add("test6");
lstTest.RemoveRange(4, lstTest.Count - 4);
foreach (string item in lstTest)
{
Console.Write(item);
}
Console.ReadLine();