使用linq处理空字符串

Ric*_*nks 6 c# linq linq-to-entities

我有一个linq语句,它根据表单中的用户输入搜索许多字段.只需要1个表单字段,因此我需要处理空字符串值.什么是解决这个问题的最好方法.我应该检查字符串的长度,然后使相关的变量为空,然后在我的linq语句中检查这个,或者我可以在我的linq语句中执行某些操作.我的方法如下: -

     public IEnumerable<Job> GetJobs(string jobNumber, string jobName, string projectDirectorName, string projectManagerName, string groupName) {
        return this._context.Jobs.Where(
            j => j.JobNumber.Contains(jobNumber) ||
                 j.JobName.Contains(jobName) ||
                 j.ProjectDirectorFullName.Contains(projectDirectorName) ||
                 j.GroupName.Contains(groupName));
    }
Run Code Online (Sandbox Code Playgroud)

Han*_*ing 7

你可以用这个:

 public IEnumerable<Job> GetJobs(string jobNumber, string jobName, string projectDirectorName, string projectManagerName, string groupName) {
    IQueryable<Job> query = this._context.Jobs;

    if (!String.IsNullOrEmpty(jobNumber))
       query = query.Where(j => j.JobNumber.Contains(jobNumber));

    if (!String.IsNullOrEmpty(jobname))
       query = query.Where(j => j.JobName.Contains(jobName));

    // etc.

    return query;
}
Run Code Online (Sandbox Code Playgroud)

如果这将查询数据库,那么只有在迭代此方法的结果时才会查询该数据库,而不是每个".Where".