-1

我有一个带有 BindingSource 的 DatagridView,其中大约 5000 个 DataItems 来自 LiteDB 源。这些 DataItems 包含一个小预览图片。

我的问题和问题是:我可以以某种方式提高 Databind 的性能吗?还是我用错了?

这是我的数据对象

public class VEFile
{
    public VEFile()
    {
        Tags = new List<VETag>();
    }
    public static DateTime LastPlaybacked { get; set; }

    public string Path { get; set; }
    public string FileName { get; set; }
    public string LastAccessed { get; set; }

    public byte[] Thumbnail { get; set; }
    public List<VETag> Tags { get; set; }
    [System.ComponentModel.Browsable(false)]
    public string Id { get; set; }
    public DateTime LastModified { get; set; }
    public long FileSize { get; set; }
    [BsonIndex]
    public int ViewCount { get; set; }
}

还有我的数据绑定代码:

using (var db = new MyLiteDatabase(connectionString))
        {
            var filesCollection = db.GetCollection<VEFile>("files");

            var results = filesCollection.Include(x => x.Tags).FindAll().OrderByDescending(x => x.LastModified);

            originalBindingList = new BindingList<VEFile>(new List<VEFile>(results));
            bindingSource1.DataSource = originalBindingList.OrderByDescending(x => x.LastModified);
        }

最后一行

        bindingSource1.DataSource = originalBindingList.OrderByDescending(x => x.LastModified);

挂断几秒钟,然后 RAM 使用率上升约 2GB,然后立即下降。

4

1 回答 1

0

您需要使用分页。DataSource 对象将通过设置 TotalNumberOfItems、CurrentPageIndex、PageSize 属性来支持这一点。

然后,您将调整查询以仅选择 PageSize 行数。使用 LINQ 的 Take 和 Skip 方法。

于 2016-08-18T19:23:27.573 回答