[英]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中的整個表並根據需要對其進行處理。
偽代碼:
--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.