【发布时间】:2010-10-29 22:22:20
【问题描述】:
大家好。有没有办法只将一个(或者更好的是,二维)字符串列表的一部分复制到一个新的临时字符串列表中?
【问题讨论】:
大家好。有没有办法只将一个(或者更好的是,二维)字符串列表的一部分复制到一个新的临时字符串列表中?
【问题讨论】:
尽管 LINQ 确实使这变得简单且比列表更通用(使用 Skip 和 Take),但 List<T> 具有 GetRange 方法,这让它变得轻而易举:
List<string> newList = oldList.GetRange(index, count);
(其中index 是要复制的第一个元素的索引,count 是要复制的项目数。)
当您说“二维字符串列表”时,您是指数组吗?如果是这样,您是指锯齿状阵列(string[][])还是矩形阵列(string[,])?
【讨论】:
我不确定我是否得到问题,但我会查看 Array.Copy 函数(如果您指的是数组的字符串列表)
这是一个在 .NET 2.0 框架中使用 C# 的示例:
String[] listOfStrings = new String[7]
{"abc","def","ghi","jkl","mno","pqr","stu"};
String[] newListOfStrings = new String[3];
// copy the three strings starting with "ghi"
Array.Copy(listOfStrings, 2, newListOfStrings, 0, 3);
// newListOfStrings will now contains {"ghi","jkl","mno"}
【讨论】:
FindAll 将让您编写一个 Predicate 来确定要复制哪些字符串:
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
List<string> copyList = list.FindAll(
s => s.Length >= 5
);
copyList.ForEach(s => Console.WriteLine(s));
这会打印出“三”,因为它有 5 个或更多字符长。其他的都被忽略了。
【讨论】: