c# - 我面临着对 IEnumerable(LINQ) > List(RecyclerView) 的巨大性能影响

标签 c# android sql linq xamarin

我的项目是一个商业项目我不能在这里发布,但是代码过程是:

  1. GetAll(LINQ)
  2. 过滤(Linq)
  3. 将 IEnumerable 结果传递给 RecyclerView Adapter
  4. 适配器将 IEnumerable<> 转换为 List<>
  5. 适配器为 ItemCards 充气

对 #4 的性能影响很大,在大约 3k 项上最多需要 3 秒。

如何降低性能影响?

我注意到如果我只是创建一个 new List<>(3000) , 它也需要大约 1.5 秒。

或者我不应该使用列表?

如果我们不使用 List<>,Adapter 如何通过 [position] 获取数据。

How to go to particular Item in IEnumerable

ElementAt()让我的应用程序在膨胀时完全死掉。似乎可以 ToList()在每个项目。

最佳答案

我自己找出问题:

3.pass IEnumerable result to RecyclerView Adapter

不要将 Ienumerable 传递给 Adapter,否则,它会在每个项目处重新查询。改为传递列表。

关于c# - 我面临着对 IEnumerable(LINQ) > List(RecyclerView) 的巨大性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581687/

相关文章:

c# - Windows Phone 中的 "Operation not permitted on IsolatedStorageFileStream"问题

c# - 在XAML中创建 "Dictionary<string, Dictionary<string, string>>"

android - android中高效的gps服务

android - 领英 API : No value for accessTokenValue and "access toke is not set" error

android - 类 'action' 不是抽象的,没有实现抽象成员 public abstract val actionId : Int defined in androidx. navigation.NavDirections

c# - 具有设计模式统计信息的示例项目

c# - 在 ARM 上使用 Span<T> 给出 "System.DataMisalignedException:"

sql - 如何在SQL中执行T9搜索方法?

c# - 删除实体而不在通用存储库模式 Entity Framework 中获取它

c# - 从 .NET SqlCommand 调用时 SQL Server 批量插入失败