[英]Excluding one item from list (by Index), and take all others
有一个List<int>
包含一些数字。 随机选择一个索引,将单独处理(称之为主索引)。 现在,我想要排除这个特定的索引,并获取List
所有其他元素(称为slave )。
var items = new List<int> { 55, 66, 77, 88, 99 };
int MasterIndex = new Random().Next(0, items .Count);
var master = items.Skip(MasterIndex).First();
// How to get the other items into another List<int> now?
/* -- items.Join;
-- items.Select;
-- items.Except */
Join
, Select
, Except
- 其中任何一个,以及如何?
编辑:无法删除原始列表中的任何项目,否则我必须保留两个列表。
您可以从列表中删除主项目,
List<int> newList = items.RemoveAt(MasterIndex);
RemoveAt()从原始列表中删除项目,因此没有必要将集合分配给新列表。 调用RemoveAt()后, items.Contains(MasterItem)
将返回false
。
如果性能是一个问题,您可能更喜欢使用像这样的List.CopyTo方法。
List<T> RemoveOneItem1<T>(List<T> list, int index)
{
var listCount = list.Count;
// Create an array to store the data.
var result = new T[listCount - 1];
// Copy element before the index.
list.CopyTo(0, result, 0, index);
// Copy element after the index.
list.CopyTo(index + 1, result, index, listCount - 1 - index);
return new List<T>(result);
}
这个实现几乎是@RahulSingh答案的3倍。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.