2015-05-27 81 views
1

初學者問題。返回類型爲datatable或List - c#

有DAL類在我的應用程序,它具有以下功能

public static Datatable GetCustomers() 
public static Datatable GetOrderDetails(int orderId) 

我已經被告知,良好的做法是,返回類型爲List或類。

所以這將是

public static List<customer> GetCustomers() 
{ 
    Datatable dt = ...; 
    //then loop through the rows in the table and add to List<customer> 
} 
public static order GetOrderDetails(int orderId) 

我想知道什麼是在後發優勢。

+1

有一個'List '你可以用LINQ稍後過濾它,連接到WPF中的項目控件等。 –

+2

對於初學者來說,它將從接口中分離實現(使用數據表)。這樣可以更輕鬆地進行單元測試,並允許更改而不影響客戶端。你也可以返回一個'IEnumerable '而不是列表。 –

+1

''List'1''是類似''Datatable''的類是 –

回答

2

當您開發API時,最好使用來自System.Collections.*System.Collections.Generics.*名稱空間的類或更好的接口,原因是您從數據訪問特定技術抽象爲基本數據結構。這些類型更容易從其他語言使用,或者需要將結果轉換爲其他格式,如jsonXML。使用LINQ查詢它也更容易。

DataTable需要依賴System.Data程序集,您可能不想添加它,特別是如果以後決定使用其他數據庫。

如果您需要使用特定的數據庫庫來嘲笑它或使用其他深奧的技術,那麼測試對於基本的普通數據結構和屁股疼痛是一件輕而易舉的事情。

4

後者顯式定義了您的DAL的消費者的合同,因此他們不必猜測數據表中的內容,它在Customer類的內容中固有。而且,它隱藏了數據訪問層類後面的數據訪問問題,因此消費者只需處理純粹的列表和對象,而不是與數據訪問相關的任何內容。