为了账号安全,请及时绑定邮箱和手机立即绑定

使用泛型和接口的 Linq 查询

使用泛型和接口的 Linq 查询

C#
炎炎设计 2023-09-16 16:19:51
我有几个实现以下 IInactive 接口的实体框架类。public interface IInactive{    bool inactive { get; set; }}例如我的Order类定义如下:public class Order : IInactive{    [Key]    [Required]    public Guid orderId { get; set; }    ...    public bool inactive { get; set; }} 我正在尝试实现一个通用方法,该方法可用于所有对象(实体),无论它们是否实现 IInactive 接口。它将被称为如下:var query = GetAllActive<Order>();我的这个通用方法的代码如下所示:public IQueryable<T> GetAllActive<T>() where T : class{    DbSet<T> dbSet = this._db.Set<T>();    // Does the entity implement the IInactive interface.    // If yes, only return "active" row, otherwise return all rows    if (typeof(T)is IInactive)    {        // Problem: the code in this block never executes, that is,        // (typeof(T)is IInactive) never evaluates to true       ...    }    return dbSet;}我非常感谢您帮助解决这个问题!谢谢。
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

代替

if (typeof(T) is IInactive)

尝试

if (typeof(IInactive).IsAssignableFrom(typeof(T)))


查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 61 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信