dotNet C#DataGridView数据绑定性能

dotNet C#DataGridView数据绑定性能,c#,data-binding,datagridview,litedb,C#,Data Binding,Datagridview,Litedb,我有一个DatagridView,其中BindingSource包含来自LiteDB源的约5000个数据项。这些数据项包含一个小预览图片 我的问题是:我能否以某种方式提高数据绑定的性能?还是我用错了 这是我的数据对象 public class VEFile { public VEFile() { Tags = new List<VETag>(); } public static DateTime LastPlaybacked { get

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

我的问题是:我能否以某种方式提高数据绑定的性能?还是我用错了

这是我的数据对象

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; }
}

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

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

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

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);