1
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; 

谢谢

4

7 回答 7

10

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

于 2012-07-20T19:40:43.410 回答
5

您的方法想要返回 a List<Parts>,但您正试图返回 aList<string>

于 2012-07-20T19:41:00.490 回答
5
List<string> is not the same as List<Parts>

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

public List<Parts> GetParts()

指定您返回:

List<Parts>

但是,您要返回:

List<string>

要更正,您应该在函数 a 中创建列表List<Parts>并添加Parts到其中。或者将返回类型更改为List<string>

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

于 2012-07-20T19:41:23.767 回答
5

发生错误是因为该方法应返回 aList<Parts>而您尝试返回 aList<string>

于 2012-07-20T19:41:27.090 回答
3

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

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

于 2012-07-20T19:41:46.183 回答
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());
}
于 2012-07-20T19:44:03.203 回答
1

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

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

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

}

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

于 2012-07-20T19:55:44.510 回答