-1

情况:我在 MainPage.xaml.cs 中有一个搜索文本框的事件处理程序

    void src_textbox_TextChanged(object sender, TextChangedEventArgs e)
    {
        TextBox tb = sender as TextBox;

        listBoxTextItems.ItemsSource = App.ViewModel.Problems.Where(w => w.ProblemName.ToLower().Contains(tb.Text));

    }

listBoxTextItems:列表框控件的名称,
问题:在 MainViewModelClass 构造函数中实例化的集合的名称,

ProblemName此代码仅显示其属性包含在 textbox 中键入的字母的那些对象。

问题:我想要的是这段代码还应该显示那些ProblemDesc属性包含在文本框中键入的字母的对象。

我试过这样的事情:

            listBoxTextItems.ItemsSource = App.ViewModel.Problems.Where((w => w.ProblemName.ToLower().Contains(tb.Text))||(w => w.ProblemDesc.ToLower().Contains(tb.Text)));

但我收到一条错误消息,说“运算符||不能应用于类型lambda expression和的操作数lambda expression。有人可以建议我正确的代码吗?

4

2 回答 2

2

您无需在需要时指定 lambda 参数。只需指定一次:

App.ViewModel.Problems.Where(w => w.ProblemName.ToLower().Contains(tb.Text) || 
                                  w.ProblemDesc.ToLower().Contains(tb.Text));

当您w第二次指定时,您正在创建一个新的 lambda 表达式,因此您会收到错误。lambda 表达式的简单语法是:

(input parameters) => expression 

在这种情况下,您只有一个输入参数,即w,您只需要指定一次,因此您将使用相同的参数并只创建一个返回布尔结果的lambda 表达式。

您可以参考文档以获取有关 lambda 表达式的更详细说明:

于 2014-07-12T09:38:09.760 回答
1

你快到了...

listBoxTextItems.ItemsSource = App.ViewModel.Problems.Where(w => w.ProblemName.ToLower().Contains(tb.Text) || w.ProblemDesc.ToLower().Contains(tb.Text));
于 2014-07-12T09:31:35.747 回答