2010-03-23 5 views
2

J'ai un fichier texte que je lis chaque ligne d'utilisation sr.readline()
En lisant cette ligne, je veux la rechercher dans une liste à laquelle la ligne aurait dû être ajoutée précédemment , puis ajoutez la ligne à une nouvelle liste (différente). Comment puis-je faire cela?Comment trouver la ligne dans une liste

+0

Donnez un échantillon de code pour donner une image claire. Pouvez-vous expliquer le contexte de cette exigence. – Mohanavel

Répondre

4

List.Contains(string) vous dira si une liste contient déjà un élément.

Donc, vous voulez faire quelque chose comme:

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

Vous pouvez boucle à travers cette logique:

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

-1 Ce n'est pas ce qu'il/elle veut faire selon la description. – jjnguy

+0

En fait, le libellé de la description ne dit pas s'ils recherchent une correspondance positive ou négative, mais simplement qu'elle aurait dû être ajoutée, peut-être qu'ils recherchent des chaînes qui auraient dû être ajoutées mais qui ne l'étaient pas. Donc, vous avez tous les deux raison/tort – benPearce

+2

@benP il est spécifiquement indiqué que la ligne du fichier doit être ajoutée à une nouvelle liste (différente) si elle est déjà dans l'ancienne liste. – jjnguy

0

Vous pouvez faire quelque chose comme ça.

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(); 

Edit: comme une note, ma solution court-circuite l'utilisation du StreamReader et d'essayer de trouver des éléments dans une autre liste et utilise plutôt LINQ pour joindre les éléments d'une liste existante de chaînes avec les lignes à partir d'une entrée donnée fichier. Liste.Contains (entrée) est certainement très bien, et si vous avez beaucoup d'entrées à filtrer, vous pouvez envisager de convertir la liste consultable en un HashSet.

Questions connexes