使用Csharp和mariaDb已经6个月了。仅使用POC后,我开始对通用存储库,EF6和函数式编程感兴趣。我实际上正在为我的应用程序做一些重构。
在我的通用存储库中,我有以下代码:
public IEnumerable<TType> FindColumn<TType>(Expression<Func<TEntity, TType>> selection, Expression<Func<TEntity, bool>> predicate, Expression<Func<TEntity, TType>> OrderExpression)
{
return Context.Set<TEntity>().Where(predicate).OrderBy(OrderExpression).Select(selection).ToList();
}
我在非通用存储库中像这样操作这段代码:
public IEnumerable<chantiers> GetAllChantiersAsc()
{
return FindColumn(d => d.NomChantier, d => d.NomClient.Equals(clients.NomClient), d=>d.NomChantier);
}
我遇到此错误:
无法将类型'System.Collections.Generic.IEnumerable
'隐式转换为 'System.Collections.Generic.IEnumerable '。 存在显式转换(您是否缺少演员表?)
在我的应用程序中,我想要一个通用的方法来从我的EF6实体中检索列。 谢谢您的帮助。
答案 0 :(得分:0)
首先,您忘记将TEntity添加到FindColumn的函数标识符中:
public IEnumerable<TType> FindColumn<TEntity, TType>(...)
当然,您已经尝试通过完全指定所有类型来找出哪些参数不正确:
public IEnumerable<Chantiers> GetAllChantiersAsc()
{
Expression<Func<myEntityType, Chantiers>> selection = d => d.NomChantier;
Expression<Func<myEntityType, bool>> predicate = d => d.NomClient.Equals(clients.NomClient);
Expression<Func<myEntityType, Chantiers>> orderExpression = d=>d.NomChantier;
IEnumerable<Chantiers> result = FindColumn<myEntityType, Chantiers>(
selection,
predicate,
orderExpression);
return result;
}
我确定您的编译器会告诉您哪个参数的类型不正确。我的猜测是nomChantiers
是您的问题,因为它似乎是一个名称,而不是Chantiers