我正在关注本教程 https://www.codeproject.com/Articles/990492/RESTful-Day-sharp-Enterprise-Level-Application?msg=5635950#xx5635950xx 他很好地解释了简单的事情,但是作为一个初学者,我很难理解通用存储库高级功能的实现
public virtual IEnumerable<TEntity> GetMany(Func<TEntity, bool>
where)
{
return DbSet.Where(where).ToList();
}
/// <summary>
/// generic method to get many record on the basis of a condition but
query able.
/// </summary>
/// <param name="where"></param>
/// <returns></returns>
public virtual IQueryable<TEntity> GetManyQueryable(Func<TEntity,
bool> where)
{
return DbSet.Where(where).AsQueryable();
}
/// <summary>
/// generic get method , fetches data for the entities on the basis of
condition.
/// </summary>
/// <param name="where"></param>
/// <returns></returns>
public TEntity Get(Func<TEntity, Boolean> where)
{
return DbSet.Where(where).FirstOrDefault<TEntity>();
}
我在我的服务文件中实现了
public GEN_TransactionTypeSetup GetTransactionIdByTableName(string
tableName)
{
IEnumerable<GEN_TransactionTypeSetup> list =
_unitOfWorks.TransactionType_Repository.GetMany(p =>
p.Master_TableName = tableName);
return list.ToList();
}
我得到以下错误
答案 0 :(得分:0)
您将可以在实现中使用TEntity
类型的函数中的谓词。
假设您的TEntity
是Person
(GenericRepository<Person>
),而您的Person
具有属性Age
,即int
。 / p>
然后您可以说:
IEnumerable<Person> result = repository.GetMany(p => p.Age > 18);
如您所见,此(通用)方法返回一个IEnumerable<TEntity>
,这意味着您可以将其他Linq方法应用于(并链接到)结果。
还请注意,{p>中的ToList()
return DbSet.Where(where).ToList();
是多余的,并且在较大的结果集中可能会产生大量开销,因为该方法返回IEnumerable<TEntity>
,而Linq .Where()
也已经这样做了。