扩展方法查询的正确语法

时间:2013-11-24 22:24:00

标签: c# extension-methods

我正在尝试做一些类似于我以前的帖子,除了我使用扩展方法而不是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 个答案:

答案 0 :(得分: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。如果没有项与null中的谓词匹配,前者只返回Where

答案 1 :(得分: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)))