这一行给了我'TypeAs' 表达式,其输入类型为 User 并且不支持检查 SoftDeleteEntity 类型:
var test = this.partiallyFiltered.Where(additionalFilter).ToList();
这是里面的东西。partialFiltered 的类型是IQueriable<User>
。附加过滤器是类型Expression<Func<User, bool>>
,并且传递的实际表达式(根据调试器)是!((x as SoftDeleteEntity).IsDeleted)
. 用户继承 SoftDeleteEntity。我认为我没有遗漏任何相关信息,但如果我知道,我会详细说明。我知道必须有一个隐式转换在某处不起作用但我找不到它。
编辑:这是表达式的声明,所有实体都是 IEntity。
public static Expression<Func<TEntity, bool>> DefaultFilter<TEntity>()
where TEntity : IEntity
{
if (typeof(SoftDeleteEntity).IsAssignableFrom(typeof(TEntity)))
return x => !(x as SoftDeleteEntity).IsDeleted;
else return x => true;
}