Как выполнить подкачку в datatable с помощью C#

Я хочу прочитать файл между двумя датами и добавить значение в datatable. Затем нужно показать datatable значение в сетке с подкачкой. Но проблема в том, что эти файлы содержат огромное количество данных (более 1M), так что если я использую GridView по умолчанию подкачки мое приложение зависает. поэтому я хочу подкачать в datatable.так как же я могу это сделать? Любая идея кода образца пожалуйста.

public DataTable CreateDataSource(DateTime fromDate, DateTime toDate)
{
    int i = 0;
    string visitorCountry = "";
    try
    {
        dt = dtVisitLog();
        for (DateTime x = fromDate; x <= toDate; x = x.AddDays(1))
        {
            string startDate = x.Year.ToString().Substring(2, 2) + x.Month.ToString("d2") + x.Day.ToString("d2");
            string FILE_NAME = pathName + "u_ex" + startDate + ".log";
            if (File.Exists(FILE_NAME))
            {
                FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read,
                                               FileShare.ReadWrite);
                StreamReader sr = new StreamReader(fs);
                string strResult = sr.ReadToEnd();
                sr.Dispose();
                fs.Dispose();
                sr = null;
                fs = null;
                string[] arLogLines = strResult.Split(Convert.ToChar("n"));

                for (i = arLogLines.Length-2; i > 3; i--)
                {
                   string[] attribute = arLogLines[i].Split(Convert.ToChar(" "));                
                   dt.Rows.Add(attribute[0], attribute[1], attribute[8], attribute[4], attribute[7], visitorCountry);
                }
            }
        }
        return dt;
    }
    catch (Exception ex)
    {
        return null;
    }
}

1 ответ

  1. Согласно MSDN, предел Datatable составляет 16 777 216 строк. таким образом, когда вы загружаете огромные данные в datatable, это влияет на производительность приложения и памяти сервера. Так что лучше хранить эти огромные данные в базе данных, как SQL server или другой базы данных. Затем отобразите данные с помощью функции номера строки (Если используется MS SQL 2005 или 2008). Если используется SQL Server 2012, можно использовать fetch . Если вы используете MySQL server, то вы можете использовать limit для отображения ограниченных данных одновременно. То, что я пытаюсь объяснить вам, что вам нужна серверная страница, а не клиентская в этой ситуации. Спасибо.