Как найти строку в списке - PullRequest
2 голосов
/ 23 марта 2010

У меня есть текстовый файл, который я читаю в каждой строке, используя sr.readline()
Когда я читаю эту строку, я хочу найти его в списке, к которому должна была быть добавлена ​​строка, затем добавитьстрока в новый (другой) список.Как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 23 марта 2010

List.Contains(string) сообщит вам, если список уже содержит элемент.

Так что вы захотите сделать что-то вроде:

if (previousList.Contains(line)){
    newList.Add(line);
}
0 голосов
/ 23 марта 2010

Вы могли бы сделать что-то вроде этого.

List<string> listOfStrings = new List<string>() { "foo", "baz", "blah"};

string fileName = @"C:\Temp\demo.txt";

var newlist = (from line in File.ReadAllLines(fileName)
               join listItem in listOfStrings
               on line equals listItem
               select line).ToList();

Редактировать: в качестве заметки, мое решение сокращает использование потокового ридера и пытается найти элементы в другом списке и скорее использует LINQ для объединения элементовсуществующий список строк со строками из данного входного файла.

List.Contains (входные данные), безусловно, хорошо, и если у вас много входных данных для фильтрации, вы можете рассмотреть возможность преобразования списка с возможностью поиска в HashSet.

0 голосов
/ 23 марта 2010

Вы можете пройти через эту логику:

public void DoWhatYouAreAskingFor(StreamReader sr, List<string> list)
{
    string line = sr.ReadLine();
    if (!list.Contains(line))
    {
        list.Add(line);
    }
}
...