Использование неназначенной локальной переменной C# и LINQ

Я пытаюсь использовать LINQ для извлечения информации из базы данных, созданной с помощью SQLite, в список. Затем я пытаюсь найти этот список, используя текст, введенный из двух текстовых полей на странице приложения моего Магазина Windows. Я получаю сообщение об ошибке "использование неназначенной локальной переменной", когда пытаюсь использовать список.

private void button_LINQ_Click(object sender, RoutedEventArgs e)
{
    List<Notes> manyNotes;
    int cursorPosition = TextBox_Results.SelectionStart;

    var x = (from n in manyNotes
             where (n.Note.Contains(textBox1.Text) && n.Note.Contains(textBox2.Text))
             select n).ToList();

    TextBox_Results.Text = TextBox_Results.Text.Insert(cursorPosition, "Notes containing " + textBox1.Text + " and " + textBox2.Text + ":\n");
    foreach (Notes y in x)
        TextBox_Results.Text = TextBox_Results.Text.Insert(cursorPosition, y.Note + "\n");
}

2 ответа

Решение

Вы объявляете manyNotes списком, но никогда не создаете его экземпляром ни с чем (даже с пустым списком). Как минимум, вам нужно изменить объявление списка:

List<Notes> manyNotes = new List<Notes>();

Однако, если я не следую вашему коду, вам все равно нужно добавить код, чтобы заполнить список manyNotes данными. В противном случае ваш запрос на создание экземпляра var x всегда будет пустым списком. Как будто вы запрашиваете пустую таблицу. Независимо от того, что вы фильтруете, выбор любой комбинации строк из набора из 0 строк всегда будет возвращать 0 строк. Есть смысл?

Ваша проблема здесь:

List<Notes> manyNotes;

Вы никогда не инициализируете эту переменную и затем пытаетесь использовать ее в запросе Linq.

Вы можете изменить его на

List<Notes> manyNotes = new List<Notes>();

Но это все равно приведет к пустому списку (это означает, что x также будет пустым), но ваш код все равно будет работать.

Вам нужно заполнить список для foreach цикл, чтобы на самом деле сделать что-нибудь.

Другие вопросы по тегам