簡體   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