我正在使用一个包含工具的ListView n Xamarin.Forms。用户应该能够搜索工具类型和工具位置。如果您先输入两个搜索条件,我的代码就可以正常工作。之后,您可以执行新的搜索,而忽略例如工具位置,也可以正常工作。但是,如果您仅输入一个条件开始,则该应用程序将停止。对我来说没有任何意义,因为在同时输入两个条件后它似乎可以工作。谁能告诉我我在这里想念的东西吗?
private void Btn_Search_Clicked(object sender, EventArgs e)
{
var container = BindingContext as ToolViewModel;
var searchValueToolDescription = SfEntry_ToolType.Text;
var searchValueToolLocation = SfEntry_ToolLocation.Text;
var searchValueToolPrice = SfEntry_ToolPrice.Text;
listTools.BeginRefresh();
listTools.ItemsSource = container.Tools.Where(i =>
i.ToolDescription.Contains(searchValueToolDescription) &&
i.ToolLocation.Contains(searchValueToolLocation));
}
答案 0 :(得分:0)
尝试将查询分为三种情况。单个查询可能有聪明的方法,但是它们的可读性较差
// desc and loc
if (!string.IsNullOrEmpty(searchValueToolDescription) && !string.IsNullOrEmpty(searchValueToolLocation)) {
listTools.ItemsSource = container.Tools.Where(i =>
i.ToolDescription.Contains(searchValueToolDescription) &&
i.ToolLocation.Contains(searchValueToolLocation));
}
// just desc
else if (!string.IsNullOrEmpty(searchValueToolDescription)) {
listTools.ItemsSource = container.Tools.Where(i =>
i.ToolDescription.Contains(searchValueToolDescription));
}
// just loc
else if (!string.IsNullOrEmpty(searchValueToolLocation)) {
listTools.ItemsSource = container.Tools.Where(i =>
i.ToolLocation.Contains(searchValueToolLocation));
}