【问题标题】:What is the most efficient way to store large amounts of data in a table in c#在c#中将大量数据存储在表中的最有效方法是什么
【发布时间】:2009-08-06 22:04:00
【问题描述】:

我想在一个六列最多一万行的表中存储大量数据(文本)。

我将以编程方式构建表格。 (意思是我希望能够随时添加行)

数据表是我的最佳选择吗?我打算将它绑定到一个 Telerik Grid Control for ASP.NET

我想知道我最好还是参加另一种我不知道的课程。

我将使用控件功能进行排序和分页,但我不知道这对底层对象是否过于重要。

当我说效率时,应该考虑检索,然后是存储,然后是程序员的时间。

【问题讨论】:

  • 以什么方式高效?检索时间、存储时间、程序员时间?
  • 检索,然后是存储,然后是程序员时间,我也会将此添加到问题的主要描述中。

标签: asp.net datatable telerik


【解决方案1】:

我将创建一个具有代表这六行的属性的类,然后在列表中使用它。很快:

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

然后您可以枚举 List 集合或将其绑定到数据绑定控件或与 LINQ 等一起使用。

【讨论】:

    【解决方案2】:

    首先,按照 Dan Diplo 的描述去做。 DataTable 是 DataSet 类的基础数据结构。数据集因内存使用效率低而臭名昭著。

    第二,为了保持快速:不要将所有 10,000 条记录都返回到一页上。在分页网格中一次显示一个子集(如 20 个)。您必须传递和解析的数据越少越好。

    接下来,如果可能,关闭网格上的视图状态。 ViewState 可以扩大您的页面大小(在某些情况下是 2 倍或更差)。这对于浏览器(查看页面)和服务器(必须重新加载所有 ViewState 数据)都是一个问题。尽量避免。

    如果你必须有 ViewState,但性能仍然存在问题,请将 ViewState 移动到服务器,这样它就不会传递给浏览器。

    【讨论】:

    【解决方案3】:

    如果您想在多用户环境中的编程时间或检索时间方面提高效率,您应该考虑使用 SQL Server。

    【讨论】:

    • 这些实际上是 Lucene 结果,但我想知道这种类型的东西是否还有其他更新的数据类。
    【解决方案4】:

    使用数据库。

    【讨论】:

      猜你喜欢
      • 2016-05-26
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 2011-05-24
      相关资源
      最近更新 更多