繁体   English   中英

从SQL查询数据

[英]Querying data from SQL

我需要从具有400行和24列的数据库中查询表。 我需要查询该表, 以便在行的每一行然后在每一列都可以执行一些C#代码( 我可以使用列信息来执行一些代码 )。

现在,我正在使用select语句从表中一次又一次地查询每一行,并将其存储到自定义列表并对其执行自定义操作。

这是最好,最快的方法吗? 或者我应该只查询整个表一次并存储在某个地方? 不确定在数据集中的哪个位置,然后运行throw自定义代码以使用每一行中的信息进行一些操作?

您可以一次从数据库中获取表并将其存储在数据表中,然后只需使用linq选择类似这样的列

var data = dt.AsEnumerable().Select(s => s.Field<string>("myColumnName")).ToArray<string>();

如果您不想在代码的任何地方使用其他列,则应仅从数据库中选择有用的列。

您还可以使用linq选择数据库的多个列。 这些值将以匿名类型的对象存储。

var mutipleData = from row
                  in dt.AsEnumerable()
                  select new 
                  { Value1 = row["Column1"].ToString(), 
                    Value2 = row["Column2"].ToString() 
                  };

假设每个字段为1000字节,则可容纳400行的总内存为9.6MB。 花生! 只需读取DataTable中的整个表并根据需要对其进行处理。

  • 从数据库表中选择您所关心的所有记录
  • 将选择的记录复制到DataTable中。

伪代码:

--dt is datatable
foreach(datarow dr in dt.rows)
{
--perform operation
string str=dr["columnname"].tostring 
}

400行不是一个很大的数目,但是它取决于每一列中的数据以及运行查询的频率。 如果您要做的只是运行查询并处理输出,请改用DataReader。

如果只有400条记录,我将一次全部获取它们,将它们存储在一个类中并遍历每个实例。

就像是:

public class MyTableClass(){
    string property1 {get; set;}
    string property2 {get; set;}
    int property3 {get; set;}
    // etc.
}

逻辑:

ICollection<MyTableClass> lstMyTableClass = (
                from m in db.mytableclass
                select m
            ).ToList();
            return lstMyTableClass;

然后循环:

 foreach(var myTableInstance in lstMyTableClass){

      myTableInstance.DoMyStuff();   
 }

如果记录数始终小于千,请查询所有记录并将其保存在列表中。

一旦数据进入列表,您就可以使用LINQ查询列表n次,而无需为每个请求访问数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM