gpt4 book ai didi

linq-to-sql - 带有泛型的 Linq Where 子句无法识别 Equals 基类型

转载 作者:行者123 更新时间:2023-12-04 02:51:28 24 4
gpt4 key购买 nike

我有以下简单的功能:

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”……信息是一样的。
我认为将通用约束定义为 struct 就足以将类型重新定义为原始类型。

顺便说一句... GetAll() 返回一个 IQueryable<TEntity> .

无论如何......有人知道解决方法吗?
谢谢

最佳答案

IEquatable怎么样?

where TId : IEquatable<TId>

关于linq-to-sql - 带有泛型的 Linq Where 子句无法识别 Equals 基类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4101473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com