2013-11-24 51 views
1

我想做一些類似於我以前的帖子,除了我使用擴展方法而不是LINQ。我收到一個錯誤,告訴我& &無法使用,那麼如何使用用戶輸入的兩個字符串在表格中搜索?正確的擴展方法查詢語法

var query = (App.DBConnection.Table<Notes>().Where(
        c => c.Note.Contains(textBox1.Text) && c => c.Note.Contains(textBox2.Text))).Single(); 
TextBox_Results.Text = query.Note; 

回答

2

取下第二lambda操作c =>

var query = App.DBConnection.Table<Notes>() 
    .Where(c => c.Note.Contains(textBox1.Text) 
      && c.Note.Contains(textBox2.Text))) 
    .Single(); 

除此之外,我會用FirstOrDefault代替Single。如果沒有元素或者有多個元素,後者將拋出一個InvalidOperationException。如果沒有項目與Where中的謂詞匹配,則前者僅返回null

+0

如果一個結果的預期,那麼我想'單()'是很有道理的,因爲當意外事件發生時,它會以一種明顯的方式失敗。 – svick

+2

@svick:在兩個不同的子串上的一個'String.Contains'沒有什麼地方我期望得到一個結果。 –

+0

謝謝!任何想法如何將它打印到一個TextBox? 'TextBox_Results.Text = query.Note;'拋出一個錯誤,指出「未將對象引用設置爲對象的實例」。 – cdalto

0

你並不需要聲明c變量再次

Where(c => c.Note.Contains(textBox1.Text) && c => c.Note.Contains(textBox2.Text))) 

應該

Where(c => c.Note.Contains(textBox1.Text) && c.Note.Contains(textBox2.Text)))