如何调用List类型的方法
本文关键字:List 类型 方法 调用 何调用 | 更新日期: 2023-09-27 18:17:40
目标
我想调用一个类型为List
的方法。我正在使用c#。. NET + MVC 4.
我是初学者,我不明白下面的错误:
错误 1使用泛型类型"System.Collections.Generic"。List'需要1个类型参数
我有什么
public ActionResult Index()
{
return Content(getProductsList(0, 14));
}
public virtual List getProductsList(int isOffer, int categoryId)
{
List data = ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery("CALL getProductsListForHome({0}, {1});", isOffer, categoryId).ToList();
return data;
}
我错过了什么?
List<T>
是一个泛型,这意味着它的实现采用"通配符"类型T
,当创建该类型的对象时,该类型T
被您想要保留在列表中的任何内容所替换。
对于列表,这意味着您在列表中存储具有相同类型的对象,并且当从列表中检索元素时,它们仍然具有该类型。
有效声明列表的示例如下:
List<string> listOfStrings = new List<string>();
List<int> listOfInts = new List<int>();
在您的情况下,您正在使用ObjectContext.ExecuteStoreQuery<TElement>
,这是一个接受类型参数本身的泛型方法。该类型参数的选择决定了List<>
应该是哪种类型。您还没有为方法调用指定类型,所以如果您修复了列表声明,这可能是您得到的下一个错误。
理想情况下,它应该是这样的:
List<Product> data = ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<Product>("CALL getProductsListForHome({0}, {1});", isOffer, categoryId).ToList();
顺便说一句。我不确定,但我认为你用错了ExecuteStoreQuery
。首先,参数占位符很可能不是字符串格式占位符,而是SQL占位符(@1
、@2
);其次,该方法似乎只想要存储的查询的名称。所以你可以这样命名它:
ExecuteStoreQuery<Product>("getProductsListForHome", isOffer, categoryId).ToList();
List
是泛型类型,这意味着它必须包含类型参数T
: List<T>
,例如List<int>
或List<YourClass>
您需要一个List的数据类型,如下所示:
public virtual List<Product> getProductsList(int isOffer, int categoryId)
{
List<Product> data = ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery("CALL getProductsListForHome({0}, {1});", isOffer, categoryId).ToList();
return data;
}