我有这样的搜索方法:
public List<Employeees> AutoSuggestEmployeee(string keyword,
long employeeeTypeId, int count)
{
return context.Employeees.Where(
x => x.EmployeeeName.Contains(keyword)
&& x.EmployeeeTypeId == employeeeTypeId)
.Take(count).ToList();
}
我有另一个 Employeees 集合,比如“BadEmployeees”,我想要的是使用与之前相同的方法返回除“BadEmployeees”之外的所有 Employeees。
我试着这样写:
return context.Employeees.Where(
x => x.EmployeeeName.Contains(keyword)
&& x.EmployeeeTypeId == employeeeTypeId)
.Except(BadEmployeees).Take(count).ToList();
但它给出了一个例外Except
只能使用 Int、Guid 等数据类型...
The Except
方法进行比较,因此它必须知道如何比较对象。对于简单类型,有标准比较,但对于复杂类型,您需要提供一个相等比较器来比较对象中的相关数据。
Example:
class EmployeeComparer : IEqualityComparer<Employeees> {
public bool Equals(Employeees x, Employeees y) {
return x.Id == y.Id;
}
public int GetHashCode(Employeees employee) {
return employee.Id.GetHashCode();
}
}
Usage:
return
context.Employeees
.Where(x => x.EmployeeeName.Contains(keyword) && x.EmployeeeTypeId == employeeeTypeId)
.Except(BadEmployeees, new EmployeeComparer())
.Take(count)
.ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)