我有一个元素列表,但是如果列表元素的数量大于4,我想删除所有元素,但只留下列表中的前4个元素.
例:
列表<> - 1,2,3,4,5,6,7,8
新名单应为 - 1,2,3,4
我正在寻找使用List.RemoveAll()但不知道在括号中放什么
期待一些帮助......
史蒂芬
Jon*_*eet 21
为什么不使用List.RemoveRange:
if (list.Count > 4)
{
    list.RemoveRange(4, list.Count - 4);
}
Run Code Online (Sandbox Code Playgroud)
(假设你想改变现有的列表.如果你很乐意创建一个新的序列,我肯定会list.Take(4)根据Adam的建议使用,无论有没有ToList调用.这些天我倾向于构建查询而不是改变现有的集合. )
或者,您可以使用旧项目创建新列表:
var firstFour = myList.Take(4).ToList();
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的名单,然而,是不一样的,从原来的列表中删除.
或者,如果你需要做的就是迭代它们,只需Take不在ToList里面foreach:
foreach (var item in myList.Take(4))
Run Code Online (Sandbox Code Playgroud)
然后,您将获得延迟执行,并且不会在创建列表上花费内存.
正如附注,使用linq和linq扩展,我发现代码更明确地声明了你的意图:list.Take(4)阅读比list.RemoveRange(4, list.Count - 4);一目了然容易得多.代码中的意图对于维护和团队工作非常重要.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           11917 次  |  
        
|   最近记录:  |