我正在尝试创建一个通用缓存类,它将保存一个对象列表,
并将公开一个方法,该方法可以根据 Id 属性检查对象的实例是否已被缓存:
public class CacheService<T> where T : BaseModel
{
private List<T> _data = new List<T>();
public void Check(T obj)
{
if (_data.Contains(r => r.Id.Equals(obj.Id))
{
//Do something
}
}
}
public class BaseModel
{
public int Id { get; set; }
}
我在 Contains()
命令上遇到编译器错误,说:
Cannot convert lambda expression to type 'T' because it is not a delegate type
我怎样才能实现我的目标?
最佳答案
您可以使用 Linq:
bool contains = _data.Any(r => r.Id.Equals(obj.Id));
或List.Exists
:
bool contains = _data.Exists(r => r.Id.Equals(obj.Id));
关于c# - 是否可以使用 List<T>.Contains(...)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972939/