这是一个使用Xamarin的Android应用程序。MvvmCross与SqlLite极其缓慢
我有一个简单的搜索屏幕,用户根据状态,城市,州际等选择筛选(1个或多个选项)。当状态发生变化时,其他下拉菜单会适当变化(根据该州或城市间存在的城市等)。每次更改状态下拉菜单以更新其他下拉菜单时,需要花费2秒或更多时间,同时UI无法响应。我还注意到RaisePropertyChanged事件实际上并没有发生,直到set方法中的所有代码都完成。我如何加快事情以提供更好的用户体验?
以下是缓慢的SQL调用。我正在查找基于父级属性的子对象列表。
var parentIds = _connection.Table<Parent>().Where(x => x.State == state).Select(x => x.Id);
return _connection.Table<Child>()
.Where(x => parentIds.Contains(x.ParentId))
.Select(x => x.ChildProperty)
.OrderBy(x => x)
.Distinct();
我很好奇,为什么这个查询在SqlLite中工作得更好。这与执行不佳的查询几乎完全相同,除了我调用.ToList()以在调用我的Linq查询之前强制将对象加载到内存中。 –