2013-11-24 43 views
0

我想使用LINQ将数据库中的信息从使用SQLite制作成列表。然后我尝试使用从我的Windows应用商店应用页面上的两个文本框输入的文本来搜索该列表。一旦我尝试并使用列表,我会收到一个错误,指出“使用未分配的本地变量”。使用未分配的本地变量错误C#和LINQ

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

你在'manyNotes'里没有任何东西,它没有分配给任何东西,你不能使用它。 –

回答

0

您将manyNotes声明为List,但您绝不会使用任何东西(即使是空List)来实例化它。至少,你需要在你的列表中声明更改为:

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

然而,除非我不遵守你的代码,你还需要添加代码来填充数据的manyNotes列表。否则,您实例化var x的查询将始终为空列表。这就像你正在查询一张空桌子一样。无论你如何过滤,从0行的集合中选择任何行的组合总是会返回0行。合理?

+0

我创建了一个名为Notes的类 [SQLite.Table(“MyNote”)] public class Notes { [SQLite.PrimaryKey] public string Note {get;组; } [SQLite.Ignore] public string Get_Notes {get {return Note; }} } 我也在我的代码中建立了数据库文件的连接,所以我不确定为什么数据库会是空白的。 – cdalto

+0

你的数据库可能没问题。你根本没有在代码中引用数据库。您需要建立与SQLite DB的连接来查询您的Notes表以填充变量x。看起来你根本不需要你的manyNotes List变量。这听起来像你认为manyNotes变量是你的SQLite表,但它是完全不同的东西。 –

+0

好吧,我明白了。我现在已经创建了一个GetData函数,可以将表中的数据移动到列表中。现在是获取信息实际显示在文本框中的问题。感谢您的帮助。 – cdalto

0

你的问题是在这里:

List<Notes> manyNotes; 

你永远不intialise这个变量,然后尝试在LINQ查询使用它。

你可以把它改成

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

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

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

+0

我可以做这样的事吗? 'List manyNotes = App.DBConnection.Table ();' 我在App.xaml.cs中创建了一个到我数据库文件的连接 – cdalto

相关问题