我有这个搜索方法:
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();
}
我有另一个员工集合,比如“BadEmployeees”,我想要的是使用与之前相同的方法返回除“BadEmployeees”之外的所有员工。
我试着这样写:
return context.Employeees.Where(
x => x.EmployeeeName.Contains(keyword)
&& x.EmployeeeTypeId == employeeeTypeId)
.Except(BadEmployeees).Take(count).ToList();
但它给出了一个异常(exception),Except
只能处理 Int、Guid 等数据类型,...
最佳答案
Except
方法进行比较,因此它必须知道如何比较对象。对于简单类型,有标准比较,但对于复杂类型,您需要提供一个相等比较器来比较对象中的相关数据。
例子:
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();
}
}
用法:
return
context.Employeees
.Where(x => x.EmployeeeName.Contains(keyword) && x.EmployeeeTypeId == employeeeTypeId)
.Except(BadEmployeees, new EmployeeComparer())
.Take(count)
.ToList();
关于c# - 使用 linq 加载除另一个集合之外的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7091834/