2009-08-06 49 views
0

我想將大量的數據(文本)存儲在一個有六列和多達一萬行的表中。什麼是在c#中的表中存儲大量數據的最有效的方式是什麼?

我將以編程方式構建表格。 (含義我希望能夠添加行,因爲我去)

是datatable我的最佳選擇?我打算把它綁定到一個Telerik Grid Control for ASP.NET

我想知道我最好用另一種類型的我不知道的類。

我將使用控件的排序和頁面功能,但我不知道是否對底層對象太重要。

檢索,然後存儲,然後程序員的時間應該考慮當我說效率。

+2

以什麼方式高效?檢索時間,存儲,程序員時間? – 2009-08-06 22:08:55

+0

檢索,然後存儲,然後程序員的時間 我也將這添加到問題的主要描述。 – Matt 2009-08-06 22:09:49

回答

4

我會創建一個具有代表這六行的屬性的類,然後在列表中使用它。很快:

public class Result 
{ 
    public string Title { get; set; } 
    public double Score { get; set; } 
    public string Summary { get; set; } 
    // etc. 

    public Result(string title, double score, string summary) 
    { 
     Title = title; 
     Score = score; 
     Summary = summary; 
    } 

    public Result() { } 
} 

public class Test 
{ 
    public static IList<Result> GetResults() 
    { 
     List<Result> results = new List<Result>(); 

     results.Add(new Result("First result", 0.914, "This is the summary")); 
     results.Add(new Result("Second result", 0.783, "More summary....")); 
     results.Add(new Result { Title = "Third", Score = 0.54, Summary = "Anonymous I am..." }); 
     // etc 
     return results; 
    } 
} 

然後,您可以枚舉列表集合或將其綁定到數據綁定控件或LINQ等等

1

如果您希望在多用戶環境中編程時間或檢索時間方面高效,則應考慮使用SQL Server。

+0

這些實際上是Lucene的結果,但我想知道是否有任何其他更新的數據類爲這種類型的事情。 – Matt 2009-08-06 22:14:50

2

首先使用它,做什麼丹DIPLO描述。 DataTable是DataSet類的基礎數據結構。 DataSets因內存使用效率低下而臭名昭着。

其次,爲了保持快速:不要將所有10,000條記錄返回到一個頁面上。一次顯示一個子集(如20),在一個分頁的網格中。你必須傳遞和解析的數據越少越好。

接下來,如果可能,請關閉網格上的viewstate。 ViewState可以擴大您的頁面大小(在某些情況下爲2倍或更差)。這對於瀏覽器(查看頁面)和服務器(必須重新加載所有ViewState數據)都是個問題。盡你所能避免它。

如果您必須擁有ViewState,並且性能仍然存在問題,請將ViewState移動到服務器,以免它傳遞到瀏覽器。

+0

您能否建議我在哪裏可以閱讀更多關於使用ViewState的性能問題? TiA – abatishchev 2009-08-06 23:13:52

+0

http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx和http://msdn.microsoft.com/en-us/library/ms998549.aspx是開始的好地方。 – 2009-08-06 23:43:50

0

使用數據庫。

相關問題