【发布时间】:2014-10-30 17:03:45
【问题描述】:
我有这两个列表result 和resultNew:
data.AddMapping<Employee>(x => x.Name, "Name");
data.AddMapping<Employee>(x => x.Code, "Code");
data.AddMapping<Employee>(x => x.WorkingStatus, "Working Status");
var result = (from x in data.Worksheet<Employee>("Tradesmen")
select x).ToList();
dataNew.AddMapping<Employee>(x => x.Name, "Name");
dataNew.AddMapping<Employee>(x => x.Code, "Code");
dataNew.AddMapping<Employee>(x => x.WorkingStatus, "Working Status");
var resultNew = (from x in dataNew.Worksheet<Employee>("On Leave")
select x).ToList();
其中Employee 是一个简单的c# 代码,其中包含code、name 和workingStatus 字段
我想获取code 是resultNew 而不是result 的数据
我试过了:
var newEmployees = resultNew.Except(Code = result.Select(s => s.Code)).ToList();
但我遇到了语法错误:
System.Collections.Generic.List' 不包含 'Except' 的定义和最佳扩展方法重载 'System.Linq.Enumerable.Except(System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable )' 有一些无效的参数
【问题讨论】:
-
如果
resultNew是List<string>(Codes),那么你可以这样做:resultNew.Except(result.Select(s=> s.Code).ToList(),但这会给你的代码不同。 -
@Habib 不,它在
Employee上列出 -
Except用于处理 2 个枚举。基本上“取这两个相同类型的列表,只返回项目不在另一个列表中的元素”。 -
@TyCobb 但这些是
Employee对象上的列表,我想根据Employy code进行区分,不是因为有时我们有同名但代码不同的员工。 (代码就像 ID)请教我? -
不,我明白了。只是告诉你
Except实际做了什么以及为什么会出错。