Ⅰ 數據表(DataTable)處理數據與泛型(List<***>)處理數據,那個的執行效率高,而且內存佔用少呢
1.List<T>是強類型化的,而DataTable不是
一般的DataTable,訪問某列時,是通過string的ColumnName來取得的,比如:
string name = dt.Rows[i]["Name"].ToString();
因為是string的列名,存在記錯寫錯的風險,且編譯不檢查
而List<T>,因為類型化的元素,編程時屬性可以有IDE的智能感知來選擇,編碼更方便。
不容易出錯:
string name = list[0].Name;
2.Linq的強有力支持,使得操作List<T>有前所未有的快感
其實在linq出來之前,還是DataTable用的多,因為要想過濾數據,可以用
DataView,DataTable.Select()等方法。而List<T>只能是自己寫循環,麻煩。
Linq出來之後,where,join,group by,order by...等等操作,對於List<T>的查詢
真是很便利。
3.DataTable的結構遠比List<T>要復雜,內存佔用量更大。
在有變化的場合下,DataTable里要維護不同RowState的數據(修改前的和現在的),還有Schema數據
List<T>就沒有這些累贅,更輕快。
所以,Linq+List<T>才使得現在大家越來越傾向使用List<T>而不是DataTable
Ⅱ 資料庫怎麼存list
1、創建項目和資料庫的連接,進行配置數據源,設置jdbc路徑,用戶名,密碼,以及最大連接,連接最小空閑等。
2、看資料庫jdbc連接的詳細配置,driverClassName,jdbc_url,jdbc_username,jdbc_password等。
3、寫添加數據到資料庫的sql語句,用insertintowms_position()values()語句添加數據。
4、使用介面調用sql語句,創建position類,裡面含有各個變數。
5、在service邏輯業務層調用語句。
6、使用List
7、打開資料庫position表,看到將list數據存儲到資料庫中。
Ⅲ list結構用什麼資料庫
list是一個鏈表結構,主要功能是push,pop,獲取一個范圍內所有值等等,操作中key可以理解為鏈表的名字。Redis的list類型實際上就
list是一個鏈表結構,主要功能是push,pop,獲取一個范圍內所有值等等,操作中key可以理解為鏈表的名字。
Redis的list類型實際上就是每個子元素都是string類型的雙向鏈表,我們可以通過push,pop命令操作從鏈表的頭部或者尾部添加刪除元素,這樣list既可以作為棧,又可以作為隊列。
list常見的操作:
(1)lpush和rpush
lpush表示在key對應的list的頭部添加字元串元素。例如:lpush list Hello
rpush表示在key對應的list的尾部添加字元串元素。例如:rpush list World
(2)lpop和rpop
lpop代表從list的頭部刪除元素,並返回元素。
rpop代表從list的頭部刪除元素,並返回元素。
(3)lrange
取出指定范圍內的元素。例如:lrange list 0 -1,0是第一個元素的下標,-1是最後一個元素的下標。
(4)linsert
在key對應的list的特定位置前或後添加字元串,例如:
linsert list before Hello Redis 表示在list鏈表的Hello前面插入一個元素Redis
(5)lset
設定list中指定下標的元素值,例如:lset list 1 Database,意思是把list中下標為1的元素替換為
Database。
(6)lrem
從key對應的list中刪除n個和value相同的元素,如果n<0表示從尾部刪除,n=0表示全部刪除。
例如:lrem list 1 Hello
(7)ltrim
保留指定key范圍內的數據。比如:ltrim list 1 -1,相當於只保留下表從1開始到最後的元素的值。
(8)rpoplpush
從第一個list的尾部移除元素並添加到第二個list的頭部。例如:
(9)lindex
返回名稱為key的list中index位置的元素。例如:lindex list 1,返回list中下標為1的元素。
(10)llen
返回key對應list的長度。
Ⅳ linq語言查詢資料庫的單個欄位。
publicList<string>GetCompany()//table_Company:建來立的表名
{
vardepts=fromdeptinDc.table_Company
selectdept.公司名稱自;//公司名稱為主鍵
returndepts.ToList();//出錯!!!
出錯提示:不能將類型List<string>隱式轉化為table_company
}
Ⅳ java資料庫一次性取出大數據量的數據用arraylist還是linklist
取出大數據量的數據和用arraylist還是linklist沒有任何關系!
看你的關注點在哪裡,如果內數據量夠大,你要考慮查詢容時間會不會太長,你能不能接受
ArrayList和LinkList的區別是底層數據結構不一樣。
ArrayList底層用得是數組,查詢快。
LinkedList底層是自定義數據體,增刪快。
所以你要如何處理這個數據,可以根據不同的特別來決定使用哪一個?
如果僅僅只是作為一個接收體,並不對數據做任何處理,那麼兩者都一樣
Ⅵ 如何將List集合插入到資料庫中
可以用QueryRunner的batch方法
public class Test {
private static final String DRIVER_CLASS_NAME = "";
private static final String JDBC_URL = "";
private static final String USER = "";
private static final String PASSWORD = "";
public static void main(String[] args) {
int count = 10; // 插入記錄的數目
Object[][] params = new Object[count][];
for (int i = 0; i < count; i++)
// 將每條記錄的數據插入數組
params[i] = new Object[] { "", "", "" };
batch(params);
}
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(DRIVER_CLASS_NAME);
conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
return conn;
} catch (Exception e) {
return null;
}
}
public static void batch(Object[][] params) {
QueryRunner queryRunner = new QueryRunner(true);
String sql = "INSERT INTO TABLE_NAME VALUES (?,?,?)";
try {
queryRunner.batch(getConnection(), sql, params);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Ⅶ c#的linq問題,假如有list<string> list , datatable dt, 求 list中,某個元素是否存在
dt.contain(s=>s.field == "tosearch"); 返回真或假
模糊查詢可以用 dt.contain(s=>s.field.contain("tosearch") ); 返回真或假
datatable 我不用
資料庫 我用EntityFrameWork 不知道比 這個高到哪裡去了
可以直接用linq或者 sql語句。好用的一筆
Ⅷ 什麼是LINQ它主要由哪些技術組成
語言集成查詢(Language Intergrated Query ,LINQ),LINQ是集成到c#語言中的一個面向對象的統一查詢模型,是一種獨立於數據源的查詢語言來訪問特定數據的解決方案。LINQ也是面向對象的,而且也可以擴展,在一定程度上使c#更接近於函數式編程,使開發人員的關注焦點從數據(狀態)的具體細節轉移到信息(對象)行為。並且它還為數據查詢提供了一個統一的模型,不再依賴於某種特定語言或技術的難以預測的變化。通過LINQ可以使用同一查詢模型訪問SQL資料庫和XML文件,還可以用來訪問數據。
技術:LINQ定義了大約40個查詢操作符;如下
<1>排序
OrderBy
按升序對值進行排序。
OrderByDescending
按降序對值進行排序。
ThenBy
按升序執行次要排序。
ThenByDescending
按降序執行次要排序。
Reverse
顛倒集合中的元素的順序。
<2>Set 運算
Distinct
從集合移除重復值。
Except
返回差集,差集是指位於一個集合但不位於另一個集合的元素。
Intersect
返回交集,交集是指同時出現在兩個集合中的元素。
Union
返回並集,並集是指位於兩個集合中任一集合的唯一的元素。
<3>Filtering Data(篩選數據)
OfType
根據值強制轉換為指定類型的能力選擇值。
Where
選擇基於謂詞函數的值。
<4>限定符操作
All
確定是否序列中的所有元素都滿足條件。
Any
確定序列中是否有元素滿足條件。
Contains
確定序列是否包含指定的元素。
<5>數據分區
Skip
跳過序列中的指定位置之前的元素。
SkipWhile
基於謂詞函數跳過元素,直到某元素不再滿足條件。
Take
提取序列中的指定位置之前的元素。
TakeWhile
基於謂詞函數提取元素,直到某元素不再滿足條件。
<6>聯接運算
Join
根據鍵選擇器函數聯接兩個序列並提取值對。
GroupJoin
根據鍵選擇器函數聯接兩個序列,並對每個元素的結果匹配項進行分組。
<7>數據分組
GroupBy
對共享公共屬性的元素進行分組。每個組都由一個 IGrouping<TKey, TElement>對象表 示。
ToLookup
根據鍵選擇器函數將元素插入到 Lookup<TKey, TElement> (一個一對多字典)中。
<8>生成操作
DefaultIfEmpty
將空集合替換為具有默認值的單一實例集合。
Empty
返回空集合。
Range
生成包含數字序列的集合。
Repeat
生成包含一個重復值的集合。
<9>元素操作
ElementAt
返回集合中指定索引處的元素。
ElementAtOrDefault
返回集合中指定索引處的元素;如果索引超出范圍,則返回默認值。
First
返回集合中的第一個元素或滿足條件的第一個元素。
FirstOrDefault
返回集合中的第一個元素或滿足條件的第一個元素。如果沒有這樣的元素,則返回默認值。
Last
返回集合中的最後一個元素或滿足條件的最後一個元素。
LastOrDefault
返回集合中的最後一個元素或滿足條件的最後一個元素。如果沒有這樣的元素,則返回默認值。
Single
返回集合中的唯一元素或滿足條件的唯一元素。
SingleOrDefault
返回集合中的唯一元素或滿足條件的唯一元素。如果沒有這樣的元素或集合不是正好包含一個元素,則返回默認值。
<10>converting Data Types (轉換數據類型)
AsEnumerable
返回類型為 IEnumerable< T> 的輸入。
AsQueryable
將(泛型) IEnumerable 轉換為(泛型) IQueryable。
Cast
將集合的元素強制轉換為指定類型。
OfType
根據值強制轉換為指定類型的能力篩選值。
ToArray
將集合轉換為數組。此方法強制執行查詢。
ToDictionary
根據鍵選擇器函數將元素放入 Dictionary< TKey, TValue> 中。 此方法強制執行查詢。
ToList
將集合轉換為 List<T> 。 此方法強制執行查詢。
ToLookup
根據鍵選擇器函數將元素放入 Lookup< TKey, TElement> (一對多字典)中。 此方法強制執行查詢。
<11>串聯運算
Concat
串聯兩個序列以組成一個序列。
<12>聚合操作
Aggregate
對集合值執行自定義聚合運算。
Average
計算值集合的平均值。
Count
對集合中的元素進行計數,還可以僅對滿足某一謂詞函數的元素進行計數。
LongCount
對大型集合中的元素進行計數,還可以僅對滿足某一謂詞函數的元素進行計數。
Max
確定集合中的最大值。
Min
確定集合中的最小值。
Sum
計算集合中值的總和。
Ⅸ C#中arraylist與list的優劣
ArrayList是一個集合類,從.net1.0開始就存在。用所有類的共同父類object實現泛型操作。不支持LinQ.
List是.net 2.0新加入泛型集合類。用模板限定泛型。.net3.5又擴展了List對LinQ支持。
從擴展性、方便性的角度,List肯定更靈活。
從代碼向後兼容性、運行開銷上ArrayList應該更有傳統。
畢竟運用List的全部功能要多載入Generic、LinQ兩個庫
軟硬體環境好就用List。 資源緊湊的小環境下只有ArrayList可用