我有以下简单功能:凡Linq的泛型条款不reconize的Equals基本类型
public class BaseEntityRepository<TEntity, TId> : IBaseEntityRepository<TEntity, TId>
where TEntity : class, TBaseEntity, IIdentifiedEntity<TId>
where TId : struct {
//...
public virtual TEntity GetById(TId id) {
return (from e in GetAll() where e.Id.Equals(id) select e).SingleOrDefault();
}
//...
}
由于TID是一个通用的我收到以下消息:
“无法创建一个常量值为'System.Object'的类型,在这种情况下只支持原始类型(如Int32,String和Guid)。“
无论它代表什么类型。我已经尝试了“Byte”,“Int16”,“Int32”,“Long”...这个消息是一样的。 我认为将通用约束定义为结构将足以将该类型重构为原始类型。
顺便说一句... GetAll()返回IQueryable<TEntity>
。
无论如何...有人知道解决方法吗? 谢谢
你写'GetAll'返回'IQueryable'。这也是它的声明*(也许这就是你的意思)? –
2010-11-04 21:22:35
有没有一种简单的(任何?)方法来约束到基本类型;也认为'string'是一个原始的,而不是'struct'。 – 2010-11-04 21:23:35