为什么我的List对象不包含“添加”的定义?

时间:2019-10-08 13:59:58

标签: c# asp.net-mvc

我目前正在尝试将SQL Server中的数据集放入列表中,以便随后将其显示在页面上。老实说,我在这里看了很多答案,每一次不同的尝试都会使我遇到不同的错误。

根据我的阅读,应该有效。 ScriptListList,应具有Add功能。但是,事实并非如此。这是我目前的代码:

    public ScriptList Index()
    {
        var scriptList = new ScriptList();

        //List<ScriptItem> scriptlst = new List<ScriptItem>();

        string connectionString = _configuration["ConnectionString:localhost"];

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            string statement = "SELECT ScriptGUID, ScriptName, ScriptDescription, DateAdded FROM dbo.Scropts;";
            SqlCommand command = new SqlCommand(statement, connection);
            connection.Open();

            using (SqlDataReader reader = command.ExecuteReader())
            {
                while(reader.Read())
                {
                    scriptList.Add<ScriptItem>(new ScriptItem{GUID = Convert.ToString(reader["ScriptGUID"]),
                                                              Name = Convert.ToString(reader["ScriptName"]),
                                                              ShortDescription = Convert.ToString(reader["ScriptDescription"]),
                                                              DateAdded = Convert.ToDateTime(reader["DateAdded"])});

                }
            }


        }

        return scriptList;
    }

}
public class ScriptList
{
    public List<ScriptItem> ScriptItems {get;set;}
}
public class ScriptItem
{
    public string GUID {get;set;}
    public string Name {get;set;}
    public string ShortDescription {get;set;}
    public DateTime DateAdded {get;set;}
}

这给了我下面的错误:

  

'ScriptList'不包含'Add'的定义,最佳扩展方法重载'ConfigurationExtensions.Add(IConfigurationBuilder,Action)'需要类型为'IConfigurationBuilder'的接收器

我尝试将ScriptList的定义更改为List<ScriptItem> scriptlist = new List<ScriptItem>();,但这会导致以下错误:

  

无法将类型'System.Collections.Generic.List'隐式转换为'asp.Pages.ScriptList'

我真的不明白这里出了什么问题。 scriptList为什么不具有Add功能,为什么scriptlist 确实 却被声明为{ {1}}(显然)不一样?

3 个答案:

答案 0 :(得分:5)

否,您创建的类具有List<T> 成员。这并不意味着您的类继承了该成员的所有成员。

您只是在寻找scriptList.ScriptItems.Add(),请注意添加的ScriptItems是您的列表,而不是您的ScriptList类。

答案 1 :(得分:3)

您将在示例中使用scriptlist.ScriptItems.Add()

答案 2 :(得分:1)

您的列表是在ScriptList类中定义的,因此您需要执行以下操作:

scriptList.ScriptItems.Add();