silverlight操作数据
在silverlight中我想实现按条件筛选过滤数据的功能。现在我想到的几种方法不知道哪种比较合理:
1、考虑到用户体验,我想在第一次加载的时候就一次性将数据读取完整然后以xml文件的方式存储(silverlight中没有提供system.data所以在这里我想知道还有什么其他的比较方便的处理数据的方法吗,我这里想到的要么是用linq要么是多个list按列名封装),然后根据用户在silverlight前端动作产生相应的筛选条件,显示不同的数据。
2、每一次筛选条件的改变重新load数据,这样会有很多次的数据库访问工作(我个人觉得这样不是很好)
所以在这里请教下大家上面的几个问题:
要实现我这个需求,我用第一种还是第二种方式比较合理。如果是用第一种的话,应该是用那种方式处理数据比较方便呢,linq不是太熟。多个list<>感觉不是很习惯,好希望有个datatable呀。请问下还有什么其他的方法处理呀。
[解决办法]
如果是只读数据的话,一次性将数据读取到客户端,然后用ICollectionView.Filter来根据条件显示不同数据是可以的。
还有一个问题就是DomainContext.Load(全部数据),然后再DomainConext.Load(部分数据)时,客户端的EntitySet<T>里存储的数据并不是第二次Load的部分数据,而是第一次Load进来的全部数据。也就是说EntitySet<T>是所谓的aggregating collection. 不是说第一次Load全部数据,第二次Load时会把客户端EntitySet<T>清空掉,然后再用部分数据来填充。
ICollectionView方面可以参考CollectionViewSource和PagedCollectionView。大概的讲它们都可以EntitySet<T>来向视图提供一个ICollectionView接口以供界面控件绑定。