Ich habe eine Datei mit Textzeilen, die ich in ein Array (Suche) eingelesen habe. Ich habe ein mehrzeiliges Textfeld, dessen Inhalt mit einem Knopfklick in ein Array (Linien) eingefügt wird. Ich versuche das erste Array mit jedem Element aus dem zweiten Array zu suchen und füge die gefundene Zeile zu einem listView hinzu .Konvertieren Sie mehrzeilige Textbox-Elemente in ein Array und suchen Sie dann nach diesen Elementen in einem anderen Array.
Ich bekomme Null für Artikel in der foreach-Schleife. Ich habe versucht, die foreach-Anweisung mit den Zeilen und Sucharrays ohne Änderung auszutauschen.
Weitere Informationen, sagen die items.lst enthält Folgendes.
Cats have four legs
Dogs have four legs
Horses have four legs
Elephants have four legs
Im mehrzeilige Textfeld der Benutzer Hunde und die nächste Zeile Pferde, was ich will in der Listenansicht angezeigt, wenn sie die Taste drücken ist:
Dogs have four legs
Horses have four legs
public Form1()
{
InitializeComponent();
txtIndex.Text = @"c:\temp\items.lst";
listView1.Columns.Add("Item", 100, HorizontalAlignment.Left);
}
private void btnSearch_Click(object sender, EventArgs e)
{
const string index = @"items.lst";
string[] search = System.IO.File.ReadAllLines(index);
string[] sep = {"\r\n"};
string[] lines = txtList.Text.Split(sep, StringSplitOptions.RemoveEmptyEntries);
foreach (string item in lines.Where(item => search.Contains(item)))
{
listView1.Items.Add(item + Environment.NewLine);
}
}
Dank
6/6/2016 Ich endete mit dem folgenden was funktionierte.
private void btnSearch_Click(object sender, EventArgs e)
{
const string index = @"items.lst";
string[] search = System.IO.File.ReadAllLines(index);
string[] sep = { "\r\n", "\n", "\r" };
string[] lines = txtList.Text.Split(sep, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in search)
{
foreach (string item in lines)
{
if (line.Contains(item))
{
listView1.Items.Add(line + Environment.NewLine);
}
}
}
}
Und LINQ Version
foreach (string line in from line in search from item in lines where line.Contains(item) select line)
{
listView1.Items.Add(line + Environment.NewLine);
}
Was bedeutet, dass Sie "Null für Artikel in der foreach-Schleife" erhalten? 'null' oder eine' NullReferenceException'? 'String.split' gibt niemals' null' zurück, darum frage ich. –
FYI, benutze 'ReadLines' anstelle von' ReadAlllines', es wird dir ein 'IEnumerable' zurückgeben, anstatt dass du alles selbst aufteilst. –
@Tim Schmelter debugging die foreach Linie Ich bekomme Artikel | null, wenn ich den Mauszeiger über die Variable halte, sollte es etwas aus dem mehrzeiligen Textfeld sein. – Exception