Использование неназначенной локальной переменной 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
цикл, чтобы на самом деле сделать что-нибудь.