【发布时间】:2013-06-22 05:48:01
【问题描述】:
这一行告诉我不支持带有 User 类型输入和 SoftDeleteEntity 类型检查的“TypeAs”表达式:
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;
}
【问题讨论】:
-
您不能在此处使用
as运算符。尝试改用常规演员表。 -
现在就尝试一下,但仅供参考,当这段代码工作时,' as ' 就在那里。 编辑:刚刚尝试过,如果我将其更改为 ((SoftDeleteEntity)x),它会显示“无法将 TEntity 转换为 SoftDeleteEntity”。
-
你必须展示使用完整的代码。你没有给我们太多的继续。
-
我用相关部分更新了我的问题
-
SoftDeleteEntity是否实现了IEntity?
标签: c# .net linq entity-framework