元组列表和对象列表之间有什么区别?

时间:2014-09-18 12:28:25

标签: list tuples

请参阅我想列出员工对象。所以我有以下两种选择。

  1. List<Tuple<int, string, string, string>>
  2. List<Employee>其中Employee是类包含4个属性。
  3. 我的疑问是我应该使用什么(元组或员工对象列表? 如果是List<Employee>那么在哪种情况下我应该使用List<Tuple<int, string, ...>>

2 个答案:

答案 0 :(得分:0)

除非您正在进行某种算术运算,否则不应使用元组,其中元组将是一种可接受且广泛理解的提供值的方法。对于那些在您构建过程中不熟悉过程的人来说,元组会成为维护的噩梦。

编辑:想想看见之间的区别:

var employeeList = DAL.getEmployees();
var activeEmployees = employeeList.Where(employee => employee.IsActive);

VS

var employeeTuple = DAL.getEmployees();
var activeEmployees = employeeTuple.Where(employee => employee.Item3);

在第二个例子中,我知道你创建了一个活跃的员工名单,但我不知道你是怎么做到的。

答案 1 :(得分:0)

这很明显。如果您已经拥有Employee课程,则使用List<Employee>非常简单:

List<Employee> list = new List<Employee>();
list.Add( e );

...

Employee e = list.Where( i => i.Name == "John" ).FirstOrDefault();

而使用List<Tuple<...>>至少是麻烦的:

List<Tuple<....>> list = new List<Tuple<....>>();
list.Add( new Tuple<...>( e.Name, e.Surname, e.Whateverelse, e.YetAnother ) );

...

// retrieve the tuple
var tuple = list.Where( i => i.Item1 == "John" ); 
// make Employee out of it
Employee e = new Employee( e.Item1, e.Item2, e.Item3, e.Item4 );