Копирование части списка в новый список - PullRequest
9 голосов
/ 29 мая 2009

Привет всем. Есть ли способ скопировать только часть одного (или, еще лучше, двумерного) списка строк в новый временный список строк?

Ответы [ 3 ]

22 голосов
/ 29 мая 2009

Несмотря на то, что LINQ делает это проще и более общим, чем просто списки (используя Skip и Take), List<T> имеет метод GetRange, который делает его быстрым:

List<string> newList = oldList.GetRange(index, count);

(где index - индекс первого копируемого элемента, а count - количество копируемых элементов.)

Когда вы говорите "двумерный список строк" - вы имеете в виду массив? Если это так, вы имеете в виду зубчатый массив (string[][]) или прямоугольный массив (string[,])?

0 голосов
/ 29 мая 2009

FindAll позволит вам написать предикат, чтобы определить, какие строки копировать:

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 или более символов в длину. Остальные игнорируются.

0 голосов
/ 29 мая 2009

Я не уверен, что получаю вопрос, но я бы посмотрел на функцию Array.Copy (, если по спискам строк вы ссылаетесь на массивы )

Вот пример использования C # в .NET 2.0 Framework:

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"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...