为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以将查询中的文件列表直接转换为observablecollection

是否可以将查询中的文件列表直接转换为observablecollection

C#
慕斯709654 2021-04-12 17:15:18
我正在执行文件查询,它返回一个IReadOnlyList。        public IReadOnlyList<StorageFile> FileList;        FileList =   await queryResult.GetFilesAsync();这工作正常,在其他地方我正在执行foreach循环以将FileList加载到Observable集合中。令我惊讶的是,我应该能够将查询结果直接加载到可观察的集合中,如下所示:        public ReadOnlyObservableCollection<StorageFile> FileList;        FileList =  (ReadOnlyObservableCollection<StorageFile>) await queryResult.GetFilesAsync();代码可以编译,但是会触发一个异常,表明您无法将com对象转换为Observable集合...只是想知道是否有人可以解决此问题?还是我只需要复制对象并使用它?干杯
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

通过返回的对象(任务返回的)GetFilesAsync()根本就不是一个ReadOnlyObservableCollection<StorageFile>,所以你不能直接投它,你必须复制的元素。


但是,如果使用适当的构造函数重载,则可以使用较短的代码来实现:


var observableCollection = new ObservableCollection<StorageFile>((await queryResult.GetFilesAsync()).ToList());

的构造函数ObservableCollection<T>采用List<T>as作为参数并复制元素。


如果您需要a,ReadOnlyObservableCollection那么它的构造器ReadOnlyObservableCollection<T>将使用ObservableCollection<T>as参数,因此会有些混乱,因此您必须执行以下操作:


var rooc = new ReadOnlyObservableCollection<StorageFile>(

                new ObservableCollection<StorageFile>(

                  (await queryResult.GetFilesAsync()).ToList()));


查看完整回答
反对 回复 2021-04-17
  • 1 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信