我有以下的Entity Framework查询:
Func<Company, bool> filter;
if (officeId != 0)
filter = company => !company.IsDeleted && company.OfficeCompanies.Any(c => c.OfficeId == officeId);
else
filter = company => !company.IsDeleted;
var companies = from c in Repository.Query<Company>()
where filter(c) &&
(relationshipTypes.Count() == 0 || relationshipTypes.Any(r => r == c.TypeEnumIndex)) &&
c.Description.Contains(term)
orderby c.Description
select new JqueryUiAutoCompleteItem
{
label = c.Description,
value = SqlFunctions.StringConvert((double)c.Id)
};
它给我返回了错误:
LINQ表达式节点类型“Invoke”在LINQ to Entities中不受支持。
如果我在查询的主体中删除对filter()
的引用,就不会出现错误。
我理解这个错误的意思:我正在使用无法转换为SQL的代码。但是我的filter()
有什么不能转换为SQL的地方呢?
.Where()
方法而不是LINQ查询。 - Jonathan Wood