我有两张员工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
是一个包含Code
,Name
和WorkingStatus
字段的简单类。
我想知道哪些员工的状态发生了变化,我怎样才能在lists
中这样做?在datatable
中做到这一点是否更好?
答案 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();