你能解释一下这个错误吗?

时间:2012-07-20 19:39:36

标签: c# list

Cannot implicitly convert type 'System.Collections.Generic.List<string>'
to 'System.Collections.Generic.List<Parts>'

以下是生成此错误的代码。我很确定我做的事情很傻。

public class Parts
{


public string computername { get; set; }


public List<Parts> GetParts()
{
    List<string> lst = new List<string>(); 
   //The object that will physically connect to the database 
   using(SqlConnection cnx = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["request"].ConnectionString))  
   { 
            //The SQL you want to execute 
       SqlCommand cmd = new SqlCommand("SELECT * FROM REQUESTS", cnx); 
           //Open the connection to the database 
           cnx.Open(); 
           //execute your command 
           SqlDataReader dataReader = cmd.ExecuteReader(); 
           { 
             //Loop through your results 
             while(dataReader.Read()) 
             { 
                lst.Add(Convert.ToString(dataReader["titlename"])); 
             } 
           } 
   } 
   return lst; 
} 

}

错误一直指向这一行:

   return lst; 

谢谢

7 个答案:

答案 0 :(得分:10)

当方法返回类型为List<string>时,您将返回List<Part>

答案 1 :(得分:5)

您的方法想要返回List<Parts>,但您尝试返回List<string>

答案 2 :(得分:5)

List<string> is not the same as List<Parts>

您正在尝试返回错误类型的列表。你的方法声明:

public List<Parts> GetParts()

指定您返回:

List<Parts>

但是你要回来了:

List<string>

要更正,您应该将功能中的列表设为List<Parts>并添加Parts。或者将返回类型更改为List<string>

一个简单的错误,我自己做了几次。

答案 3 :(得分:5)

发生错误是因为该方法应返回List<Parts>,并且您尝试返回List<string>

答案 4 :(得分:3)

您正在尝试从返回List<string>的函数返回List<Parts>

函数返回值的类型和返回的类型需要匹配。

答案 5 :(得分:2)

方法GetParts()的返回类型为List<Parts>,但在函数中,您尝试返回List<string>

试试这个:

public List<Parts> GetParts()
{
    List<Parts> lst = new List<Parts>(); 
    using (SqlConnection cnx = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["request"].ConnectionString))
    {
        SqlCommand cmd = new SqlCommand("SELECT * FROM REQUESTS", cnx);
        cnx.Open();
        Parts parts = null; 
        SqlDataReader dataReader = cmd.ExecuteReader();
        { 
            while (dataReader.Read())
            {
                parts = new Parts();
                parts.computername = dataReader["titlename"].ToString();
                lst.Add(parts);
            }
        }
    }
    return lst;
} 

public void SomeMethod(List<Parts> parts)
{
    List<string> title = new List<string>();
    foreach(var item in parts)
    {
        title.Add(item.titlename);
    }
    this.ddlPartsTitle.Datasource = title;
    this.ddlPartsTitle.DataBind();
}

public YourClassName()
{
    this.SomeMethod(this.GetParts());
}

答案 6 :(得分:1)

您可以执行SELECT将字符串列表转换为部件列表。

假设你有一个像这样的零件类

class Parts{
    string TitleName { get; set; }
    public Parts(){ }

}

你可以return lst.Select( str => new Parts(){ TitleName = str });