2016-08-18 58 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方法。