2010-01-11 67 views
1

我在asp.net頁面有一個datagrid。還有網格的過濾器和搜索按鈕。 我有以下可能的編碼選項:asp.net LINQ vs Datatable

  1. 爲存儲過程中的網格應用過濾器。
  2. 獲取網格的所有數據並應用過濾器+使用LINQ搜索文本。
  3. 在數據表中獲取網格的所有數據並將過濾器+搜索文本應用爲可數據過濾器。

我無法決定哪一種是最好的編碼方式。此外,我正在使用3層架構,因此無法確定哪種佈局最適合應用濾波器。

回答

1

2.Fetch電網的所有數據和應用濾鏡+當您使用LINQ使用LINQ

搜索文本,並讓您可以使用IQuerable 遠程數據源你的描述你想要==>,你建立一個表達式樹,當它被執行時 被解釋(在你的情況下爲SQL)(比較IEnumerableI Queryable

我的投票:所以對使用LINQ一試,因爲它有一定的優勢 一)型安全 B)我的經驗是,LINQ可以幫助您創建,你必須decoraters喜歡Take(10).OrderBy(xx).Skip(30)

缺點良好的結構化解決方案我曾經在一個果殼 LinqPad LINQ行動

0

發現的是,你上創建SQL什麼較少的控制,你需要花一些調整時間...

好書C#3.0如果你有大量的數據,在數據庫中應用過濾器(只選擇所需記錄的確切數量)或在數據庫查詢中是一個好主意。例如,如果您有300萬條記錄,並且一次只顯示50條記錄,則只需加載您需要的50條記錄,並使用LINQ .Skip()。Take()方法分頁即可。如果你決定使用存儲的特效,那也是可行的,而SP的工作在LINQ和DataTable中。

過濾器可能難以在數據庫之外應用;這可以在數據表或LINQ中變得簡單。它取決於應用過濾器的難度和難度,無論它們是否可以很容易地應用於數據庫查詢中,或者需要通過加載所有數據並循環遍歷來在代碼隱藏中應用過濾器。

無論您使用DataTables還是LINQ,都是可行的方法。 LINQ是更新的技術,可以留在這裏; DataSets將會有一段時間,但不要指望任何新的數據集特性,因爲ADO.NET Entity Framework是新的數據集。

希望這是有道理的。