如何在List中查找行

时间:2010-03-23 02:57:38

标签: c# visual-studio-2008 list

我有一个文本文件,我正在阅读使用sr.readline()的每一行 当我读到该行时,我想在列表中搜索它,该行应该已经添加到先前,然后将该行添加到新的(不同的)列表中。我该怎么做?

3 个答案:

答案 0 :(得分:4)

List.Contains(string)会告诉您列表是否已包含元素。

所以你想做的事情如下:

if (previousList.Contains(line)){
    newList.Add(line);
}

答案 1 :(得分:0)

你可以循环这个逻辑:

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

答案 2 :(得分:0)

你可以这样做。

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。