-1

目标

我想调用一个类型为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;
    }

我错过了什么?

提前致谢。

4

3 回答 3

2

List<T>是一种泛型类型,这意味着它的实现采用“通配符”类型T,并且当创建该类型的对象时,该类型T将替换为您想要保留在列表中的任何内容。

对于列表,这意味着您将具有相同类型的对象存储在列表中,并且在从列表中检索元素时,它们仍然具有该类型。

此类列表的有效声明示例如下:

List<string> listOfStrings = new List<string>();
List<int> listOfInts = new List<int>();

在您的情况下,您正在使用ObjectContext.ExecuteStoreQuery<TElement>which 是一个采用类型参数本身的通用方法。该类型参数的选择决定了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();
于 2013-06-10T16:42:02.213 回答
1

List是泛型类型,这意味着它必须包含类型参数TList<T>例如List<int>List<YourClass>

于 2013-06-10T16:40:55.173 回答
0

您的 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;
}
于 2013-06-10T16:42:27.140 回答