2013-11-24 44 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

相關問題