【问题标题】:Why doesn't my List object contain a definition for 'Add'?为什么我的 List 对象不包含“添加”的定义?
【发布时间】:2019-10-09 02:40:31
【问题描述】:

我目前正在尝试将数据集从 SQL 服务器获取到列表中,这样我就可以在页面上显示它。老实说,我在这里看了很多答案,每一次不同的尝试都会给我带来不同的错误。

根据我的阅读,这应该有效。 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&lt;ScriptItem&gt; scriptlist = new List&lt;ScriptItem&gt;();,但是这会导致以下错误:

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

我真的不明白这里有什么问题。为什么scriptList 没有Add 功能,为什么scriptlist 尽管两者都被声明为List&lt;ScriptItem&gt; 而不是(显然)一样吗?

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    不,您创建了一个具有List&lt;T&gt;成员的类。这并不意味着您的类继承了该成员的所有成员。

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

    【讨论】:

      【解决方案2】:

      您可能希望在示例中使用scriptlist.ScriptItems.Add()

      【讨论】:

        【解决方案3】:

        您的列表是在 ScriptList 类中定义的,因此您需要这样做:

        scriptList.ScriptItems.Add();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-07
          • 1970-01-01
          • 2013-12-18
          • 2013-08-27
          • 2017-11-20
          • 1970-01-01
          相关资源
          最近更新 更多