c# – 使用linq加载除另一个集合之外的集合

我有这种搜索方法

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();

但它提供了一个例外,即Ex​​cept可以使用Int,Guid等数据类型……

解决方法

如果您很乐意检索所有数据然后执行“除外”,则相对容易:

return context.Employees
              .Where(x => x.EmployeeName.Contains(keyword)
                          && x.EmployeeTypeId == employeeeTypeId)
              // Limit the data *somewhat*
              .Take(count + BadEmployees.Count)
              // Do the rest of the query in-process
              .AsEnumerable()
              .Except(BadEmployees)
              .Take(count)
              .ToList();

或者:

// I'm making some assumptions about property names here...
var badEmployeeIds = badEmployees.Select(x => x.EmployeeId)
                                 .ToList();

return context.Employees
              .Where(x => x.EmployeeName.Contains(keyword)
                          && x.EmployeeTypeId == employeeeTypeId)
                          && !badEmployeeIds.Contains(x.EmployeeId))
              .Take(count)
              .ToList();

相关文章

有一张图片如下所示: Kimi上有一个功能,就是解析图片内容,...
Kimi上有一个功能,就是增加文件之后对话,比如我有如下一个...
Semantie Kernel中对话请求默认是发送到OpenAI去的: 其他与...
Funcion Calling介绍 函数调用允许您将模型如gpt-4o与外部工...
本文介绍了在SemanticKernel/C#中如何使用Ollama中的对话模型...
Ollama介绍 Ollama是一个开源项目,专注于开发和部署大语言模...