2015-05-27 103 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类的内容中固有。而且,它隐藏了数据访问层类后面的数据访问问题,因此消费者只需处理纯粹的列表和对象,而不是与数据访问相关的任何内容。