2016-08-18 63 views
-1

我有一个DatatridView和一个BindingSource,其中有一个来自LiteDB Source的〜5000 DataItems。这些数据项包含一个预览图片。dotnet C#DataGridView数据绑定性能

我的问题和疑问是:我能否以某种方式提高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); 

几秒钟加上内存使用坡道挂断了〜2GB并在此之后立即下降。

回答

0

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

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