使用未分配的本地变量错误C#和LINQ

时间:2013-11-24 20:47:58

标签: c# linq sqlite visual-studio-2012

我正在尝试使用LINQ将使用SQLite创建的数据库中的信息提取到List中。然后我尝试使用从我的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 个答案:

答案 0 :(得分:0)

您将manyNotes声明为List,但是您永远不会使用任何内容(甚至是空List)对其进行实例化。至少,您需要将列表声明更改为:

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

但是,除非我没有关注您的代码,否则您仍需要添加代码以使用数据填充manyNotes List。否则,您实例化var x的查询将始终为空列表。这就像你在查询一张空桌子一样。无论您过滤什么,从0行的集合中选择任何行组合将始终返回0行。有意义吗?

答案 1 :(得分:0)

你的问题在这里:

List<Notes> manyNotes;

您永远不会初始化此变量,然后尝试在Linq查询中使用它。

您可以将其更改为

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

但是这仍然会导致一个空列表(意味着x也是空的)但你的代码仍会运行。

您需要填充foreach循环的列表以实际执行任何操作。