Linq查询使用泛型
本文关键字:泛型 查询 Linq | 更新日期: 2023-09-27 18:03:24
嗨,我在我的EF存储库中有以下泛型类型方法
public class EFRepository<T> : IRepository<T> where T : class
{
public EFRepository(DbContext dbContext)
{
if (dbContext == null)
throw new ArgumentNullException("dbContext");
DbContext = dbContext;
DbSet = DbContext.Set<T>();
}
protected DbContext DbContext { get; set; }
protected DbSet<T> DbSet { get; set; }
public virtual IQueryable<T> GetAll()
{
return DbSet;
}
public virtual IQueryable<T> GetById(int loc_id)
{
return DbSet(loc_id);
}
}
在DbSet(loc_id)上,我得到智能感知说"方法,委托或事件是预期的"
请让我知道如何正确地编写此查询以使用loc_id返回列表。由于
您的T
类型应该从具有LocId
属性的其他类型继承。例子:
public class DatabaseEntity {
// This is the type all your specific database entity types
// should be inherited from
public int LocId {get; set;}
}
然后你实现你的通用存储库方法:
public virtual IQueryable<T> GetAll(int loc_id) where T: DatabaseEntity
{
return DbSet<T>().Where(item => item.LocId == loc_id);
}
您可能必须根据您的实体的loc_id属性名称编辑Where
子句中的lambda,但这应该可以工作。它使用LINQ查询DBSet中的任何实体。loc_id =传递给GetById
的loc_id
public virtual IQueryable<T> GetById(int loc_id)
{
return DbSet.Where(x=>x.loc_id == loc_id).AsQueryable();
}