情况:我在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
属性包含在文本框中键入的字母的对象。
问题:我想要的是,此代码还应显示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
类型的操作数。有谁能建议我正确的代码?
答案 0 :(得分: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表达式的更详细说明:
答案 1 :(得分:1)
你差不多......
listBoxTextItems.ItemsSource = App.ViewModel.Problems.Where(w => w.ProblemName.ToLower().Contains(tb.Text) || w.ProblemDesc.ToLower().Contains(tb.Text));