比较两个列表或数据表

时间:2014-09-05 15:30:23

标签: c#

我有两张员工excel表,

一个具有当前状态,一个具有旧状态,

我想比较它们以检查哪些员工的状态已更改。

目前我有这个:

var result = from x in data.Worksheet<Employee>("Tradesmen")
                         select x;

和此:

var resultNew = from x in dataNew.Worksheet<Employee>("Tradesmen")
                         select x;

其中result是一个数据表具有旧状态,resultNew是一个数据表具有当前状态。

我尝试了什么

我尝试将这些数据表更改为如下列表:

masterEmployees = new List<Employee>();
            foreach (var row in result)
            {
                masterEmployees.Add(new Employee(row.Code, row.Name, row.WorkingStatus));
            }

 foreach (var row in resultNew)
            {
                newEmployees.Add(new Employee(row.Code, row.Name, row.WorkingStatus));
            }

其中Employee是一个包含CodeNameWorkingStatus字段的简单类。

我的问题

我想知道哪些员工的状态发生了变化,我怎样才能在lists中这样做?在datatable中做到这一点是否更好?

1 个答案:

答案 0 :(得分:3)

试试这个

    var result = new List<Employee>();
    var resultNew = new List<Employee>();

    var changed = (from i in result
                   join j in resultNew on i.Code equals j.Code
                   where i.WorkingStatus != j.WorkingStatus
                   select new { Name = i.Name, OldWorkingStatus = i.WorkingStatus, NewWorkingStatus = j.WorkingStatus        }).ToList();

别忘了

using System.Linq;

<强>更新

如果你这样做我认为你会好的(对于resultNew变量也一样)。

var result =(来自data.Worksheet中的x(&#34; Tradesmen&#34;)                          选择x) .ToList();