我正在创建一个搜索成员的函数,我想添加一个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())));
答案 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?