我的VM上有一个属性,它与ListView
绑定 private FindCollection _searchMatches;
public FindCollection SearchMatches {
get { return _searchMatches; }
set { this.Set(ref _searchMatches, value); }
}
我的“FindCollection”类继承了ObserveCollection:
FindCollection : ObservableCollection<MyClass>
在我的FindCollection上我有一个LoadItems任务,每次导航到我的视图时都会调用它:
async Task<IList<MyClass>> LoadItems()
var stocks = _response.products?
.Select(s => new MyClass(PLService.DtoToModel(s)))
.ToList();
var items = stocks.GroupBy(p => p.productModel.Description)
.Select(p => p.First())
.ToList();
return items;
所以SearchMatches现在有项目
当用户搜索字符串时,我想对List Items进行排序,其中description与searchterm相同
如何查询SearchMatches.Where(s.description == searchterm)
到我的VM;
更新: SearchMatches包含{MyClass}和MyClass {eachproduct}
谢谢,
NicoTing
答案 0 :(得分:1)
使用UWPCommunityToolkit中的AdvancedCollectionView。它会让你的工作变得非常简单。
要使用AdvancedCollectionView
,您应该安装Microsoft.Toolkit.Uwp.UI nuget包。
这是syndax:
var acv = new AdvancedCollectionView(oc); //oc is your ObservableCollection
acv.Filter = s => s.Description.ToLower().Contains(searchTerm.ToLower());
YourListView.ItemsSource = acv;
了解更多信息:AdvancedCollectionView
答案 1 :(得分:0)
var query = SearchMatches.Where(s => s.Description.ToLower().Contains(searchTerm.ToLower()));
FindCollection collection = new FindCollection();
foreach (var r in query )
{
collection.Add(r);
}