具有包含值和可空值的Linq查询

ste*_*776 3 c# linq entity-framework entity-framework-4

我有一种搜索方法,如下所示:

public IEnumerable<Result> Search(string searchText)
{

     return _context.Person.Where(x => x.Contains(searchText));
}
Run Code Online (Sandbox Code Playgroud)

我希望能够以searchTextnull / empty 调用此函数并获取所有记录。

我没有运气尝试过这个:

return _context.Person.Where(x => x.Contains(searchText ?? ""));
Run Code Online (Sandbox Code Playgroud)

除了将其分为两个步骤并searchString在将其应用于查询之前检查if语句之外,还有另一种方法来实现此目的吗?

Mar*_*ade 5

_context.Person.Where(x => string.IsNullOrEmpty(searchText) ? true : x.Contains(searchText));
Run Code Online (Sandbox Code Playgroud)


Die*_*res 5

public IEnumerable<Result> Search(string searchText)
{
    if(string.IsNullOrEmpty(searchText))
        return _context.Person;
    else
        return _context.Person.Where(x => x.Contains(searchText));
}
Run Code Online (Sandbox Code Playgroud)


小智 5

我尝试了所有解决方案,下面的解决方案对我有用

query = query.Where(e =>  e.CategoryType.HasValue && categoryTypes.Contains(e.CategoryType.Value));
Run Code Online (Sandbox Code Playgroud)

问题