1

我正在制作一个搜索成员的函数,我想在我的 searchResults 变量中添加一个 Where。但是,在我这样做之前,它可能需要是一个 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())));
    }

此行无法编译,因为它无法解析 Where:

searchResults = searchResults.Where(x => x.name.ToLower().Equals(enc(search.name.ToLower())));
4

2 回答 2

6

这就是问题:

var searchResults = listMembers.DataSource = members.getAllMembers()...

你应该使用:

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

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

listMembers.DataSource = searchResults;

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

一般来说,我建议不要像您的原始代码 ( x = y = z) 那样进行多次分配 - 它会使代码更加混乱,正如您所发现的......

于 2012-07-30T14:19:39.327 回答
-1

using System.Linq;的文件顶部有吗?您是否至少使用 .NET 3.5?

于 2012-07-30T14:15:02.183 回答