搜索 - IQueryable Linq

时间:2012-07-30 14:13:49

标签: 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())));
    }

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

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

2 个答案:

答案 0 :(得分: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)等多项作业 - 这会让代码更加混乱,因为您已找到...

答案 1 :(得分:-1)

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

相关问题