LinqToSQL - 在运行时转换IQueryable对象?

时间:2009-06-22 22:38:54

标签: linq-to-sql

鉴于此:

var query = context.GetTable<T>();

其中“T”是传递给方法的通用实体,

我想做这样的事情:

if(typeof(TEntity) is IEntitySoftDeletable)
  query = query.Cast<IEntitySoftDeletable>.Where(ent => !ent.IsDeleted);
}

这可能吗?

目前它告诉我,我不能这样投。

我意识到我可以在类或方法级别强制参数“T”为IEntitySoftDeletable,但我试图避免这种情况,并从同一方法提供更多灵活性。

2 个答案:

答案 0 :(得分:0)

您可以使用

测试界面
obj.GetType().GetInterface("IEntitySoftDelete") == null

我认为这应该适用于您需要的...只需确保为System.Reflection添加一个使用。

答案 1 :(得分:0)

我不确定我完全明白你想要什么,但这会有效吗?

query.OfType<IEntitySoftDeletable>().Where(ent => !ent.IsDeleted); //OfType will only give the ones that are IEntitySoftDelteable