• DataTable and DataSet are heavy weight comparitively using List Collection.
  • List<Emp> enables you to maintain the safe type. So You no need to do typecasting anytime.
  • It’s prefarable not to use DataSet and DataTable while your data is flowing between the layers as I mentioned in point1
  • Java(any other than .NET languages) can not understand DataSet and DataTable while throwing from WebService or WCF. so it’s easy to convert the List<Emp> to Emp Array and throw it to Java. Java can understand simple clases and arrays.