Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataTable.Dispose()存在问题_C# - Fatal编程技术网

C# DataTable.Dispose()存在问题

C# DataTable.Dispose()存在问题,c#,C#,DataTable.Dispose()存在问题 你好 我有以下代码的问题,它会导致内存出现问题。 问题是,我们不知道该如何解决这个问题 using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.IO; using System.Data; using System.Data.Sql; using Sy

DataTable.Dispose()存在问题

你好

我有以下代码的问题,它会导致内存出现问题。 问题是,我们不知道该如何解决这个问题

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Threading;
using System.Text.RegularExpressions;
using System.Globalization;
using System.Net;
using System.Runtime.Remoting;
using Microsoft.SqlServer;
using Microsoft.SqlServer.Server;

namespace Mirf
{
    class Program
    {

        static void Main(string[] args)
        {
 SqlConnection Lig = new SqlConnection();
        DataTable DataTab = new DataTable();


            string str_ligacao_bd = "Data Source=.\\SQL2005;Database=Bd;Integrated Security=SSPI";

            Lig = new SqlConnection(str_ligacao_bd);
            Lig.Open();

            //Efectua a intrução á tabela seleccionada base de dados
            SqlCommand cmd = Lig.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "SELECT * FROM Tab";

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds, "tab");
            DataTab = ds.Tables["tab"];


            cmd.Dispose();
            da.Dispose();
            ds.Dispose();
            Lig.Close();


            foreach (DataColumn  d in DataTab.Columns)
            {
                string linha = d.ColumnName;
                if (linha != "Tid")
                {
                    linha = "[" + linha + "]=1";
                    int sum = (int)(DataTab.Compute("COUNT(TID)",linha));
                }
            }

        }
    }

}
他是

在几列中计算1的值的最佳方法是什么。
在某些情况下,有必要合并两列或多列


谢谢

我不确定您在这里真正想要实现什么,但看起来您真的应该使用SQL直接获取答案,而不是将整个表读入本地内存,然后在本地计算。

您的表有多大?。通过从SQL获取所有数据并在.NET中进行计算,您会消耗太多内存。使用数据库,用SQL计算数据,然后在.NET中获取结果

考虑到您在另一条评论中提到数据位于文本文件中(尽管您的代码表明它位于SQL Server数据库中),我建议使用Linq来访问实体

这里有一些链接


您必须编写代码来序列化和反序列化要针对内存中C#对象构建查询的数据“行”。

您好,问题是您的DataTable正在从文本文件读取,而不是直接指向SqlServer。