繁体   English   中英

使用未分配的局部变量错误C#和LINQ

[英]Use of Unassigned Local Variable Error C# and LINQ

我正在尝试使用LINQ从使用SQLite制成的数据库中提取信息到列表中。 然后,我尝试使用从Windows Store应用程序页面上的两个文本框中输入的文本来搜索该列表。 尝试使用列表时,出现一条错误消息,指出“使用未分配的局部变量”。

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");
}

您将manyNotes声明为一个List,但是永远不要用任何东西实例化它(即使是一个空的List)。 至少,您需要将列表的声明更改为:

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

但是,除非我不遵循您的代码,否则您仍然需要添加代码以用数据填充manyNotes列表。 否则,用于实例化var x的查询将始终为空列表。 就像您要查询一个空表一样。 无论使用什么过滤,从0行集合中选择任何行组合都将始终返回0行。 说得通?

您的问题在这里:

List<Notes> manyNotes;

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

您可以将其更改为

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

但这仍将导致一个空列表(意味着x也将为空),但是您的代码仍将运行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM