我能够将作为lambda表达式的where作为参数之一传递给方法。
方法 -
public Collection<SelectionItemByGUID> GetLookupsByCashBookId<T>(Func<T, object> cashbookID) where T : class
{
var items = new Collection<SelectionItemByGUID>();
var itemsT = All<T>(null)
.Where(cashbookID);
items = new Collection<SelectionItemByGUID>(CopyListObjectProperties<SelectionItemByGUID>(itemsT.ToList()));
return items;
}
但它不允许我使用where子句并返回错误。这是下面的错误,
错误消息 -
'System.Linq.IQueryable'不包含'Where'的定义和最佳扩展方法重载'System.Linq.ParallelEnumerable.Where(System.Linq.ParallelQuery,System.Func)'有一些无效的参数< / p>
调用方法时,它不会返回任何错误消息,
调用方法 -
GetLookupsByCashBookId<Employee>(x => x.CashbookId == cashBookId);
我是否错误地将where子句传递给方法? 它必须在方法内部进行对话吗?
非常感谢任何帮助。
感谢。
答案 0 :(得分:0)
您的Func定义错误,应该是:
Func<T, bool>
你必须从你的Func返回bool。你不能像这样使用All
,因为它返回bool结果:
All<T>(null).Where(cashbookID);
首先从某处获取Employee
项目集合(可能来自您的数据库上下文),然后您可以使用Where
扩展方法。