我正在创建一个搜索成员的函数,并且想在我的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())));
最佳答案
这就是问题:
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
)-正如您所发现的,它会使代码更加混乱。关于c# - 搜索-可查询的Linq,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11723313/