搜索 - IQueryable Linq

KLI*_*M8D 1 c# linq search

我正在创建一个搜索成员的函数,我想添加一个where到我的searchResults变量.然而,在我能够这样做之前,它可能需要是一个IQueryable.

这就是我想要完成的事情:

var searchResults = listMembers.DataSource = members.getAllMembers().OrderByDescending(x => x.createdDate).Select(x => new
    {
        x.ID,
        x.memberNumber,
        x.name,
        x.email,
        x.birthDate,
        hasPayed = Helper.renderBoolImage(x.hasPayed, true),
        isConfirmed = Helper.renderBoolImage(x.isConfirmed, true),
        isExportedToExcel = Helper.renderBoolImage(x.isExportedToExcel, true)
    });

    if (!String.IsNullOrEmpty(search.name))
    {
        searchResults = searchResults.Where(x => x.name.ToLower().Equals(enc(search.name.ToLower())));
    }
Run Code Online (Sandbox Code Playgroud)

这行不会编译,因为它无法解析Where:

searchResults = searchResults.Where(x => x.name.ToLower().Equals(enc(search.name.ToLower())));
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

这就是问题:

var searchResults = listMembers.DataSource = members.getAllMembers()...
Run Code Online (Sandbox Code Playgroud)

你应该使用:

var searchResults = members.getAllMembers()...;

if (!String.IsNullOrEmpty(search.name))
{
    searchResults = searchResults.Where(...);
}

listMembers.DataSource = searchResults;
Run Code Online (Sandbox Code Playgroud)

目前的类型与类型searchResults相同listMembers.DataSource,而不是类型members.getAllMembers...

一般来说,我建议不要像原始代码那样进行多项任务(x = y = z) - 这会使代码更加混乱,因为你发现...