使用本文作为指南here 我正在尝试将 GET 方法添加到我的存储库代码中,该代码将根据 ID 返回一个“记录”。但是给出了示例代码:
public Product Get(int id)
{
return products.Find(p => p.Id == id);
}
...适应我的班级类型时:
public Platypus Get(int id)
{
return platypi.Find(p => p.Id == id);
}
...将无法编译,因为找不到“查找”;并且IDE的上下文菜单中也没有“解析”。
尝试编译的错误信息是"HandheldServer.Models.Platypus does not contain a definition for 'Find'*"
但为什么[sh,w]呢?文章中相应的类没有定义Find方法,要么...... ???
答案 0 :(得分:1)
在您关联的教程中,products
的类型为List<Product>
。并List<T>
does, in fact, have a Find()` method。
根据您看到的错误消息,platypi
属于HandheldServer.Models.Platypus
类型,它似乎是模型的单个实例,而不是该模型的集合。除非在模型上定义Find()
,否则任何单个实例都不会使用该方法。 (也不应该......在一个实例中真的没有“找到”。)
简而言之,您的platypi
对象应该是Platypus
对象的集合,而不是单个实例。至少如果它与该教程中的存储库实现保持一致。
答案 1 :(得分:1)
在示例代码中,产品是List<Product>
。 Find
是通用集合的标准method。
答案 2 :(得分:0)
这对我来说是一个愚蠢的错误(我应该更清楚/更清楚地思考)。所以这是有效的:
public InventoryItem Get(int id)
{
return inventoryItems.Find(i => 0 == (String.Compare(i.Id, id.ToString())));
}