C# System.Collections.Generic.List.Add(T)”具有一些无效参数
编辑: 我正在处理一个泛型类,它通过传递模式名表名来查询任何表,但我被困在这里了……有什么帮助吗 匹配的最佳重载方法 “System.Collections.Generic.List.AddT”具有一些无效参数 dr[i]是一个对象,您需要显式地将其强制转换为T:C# System.Collections.Generic.List.Add(T)”具有一些无效参数,c#,generics,C#,Generics,编辑: 我正在处理一个泛型类,它通过传递模式名表名来查询任何表,但我被困在这里了……有什么帮助吗 匹配的最佳重载方法 “System.Collections.Generic.List.AddT”具有一些无效参数 dr[i]是一个对象,您需要显式地将其强制转换为T: 当然,如果特定数据单元格中的值不是T类型,则会出现运行时异常。T作为什么传递?您在哪里创建T的实例?为什么不将dr[i]强制转换为T?lstSelect.AddTdr[i];dr[i]不是T型,真的吗?有什么可以否决的?没有任何解释?
当然,如果特定数据单元格中的值不是T类型,则会出现运行时异常。T作为什么传递?您在哪里创建T的实例?为什么不将dr[i]强制转换为T?lstSelect.AddTdr[i];dr[i]不是T型,真的吗?有什么可以否决的?没有任何解释???????AbuHamzah投反对票是因为答案很明显。您将如何处理运行时异常?我收到运行时错误消息=无法将类型为“System.Int64”的对象强制转换为类型为“Models.Organization”。我已将模型从字符串Id更改为Int64,但仍然相同。@AbuHamzah您的逻辑错误。假设行中的每一列都是相同类型的。重新考虑一下。
List<Organization> orgs = helperDb.QueryAllOnTable("Organization");
public class Organization
{
public string Id { get; set; }
public string Type { get; set; }
}
public List<T> QueryAllOnTable<T>(string table)
{
try
{
this.OpenConn();
List<T> lstSelect = new List<T>();
string SQL = "SELECT * FROM " + table + ";";
NpgsqlCommand command = new NpgsqlCommand(SQL, conn);
NpgsqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
for (int i = 0; i < dr.FieldCount; i++)
{
lstSelect.Add(dr[i]); //<<< throwing ERROR
}
}
this.CloseConn();
return lstSelect;
}
catch (Exception ne)
{
Console.WriteLine("error on query table connecting to server, Error details {0}", ne.ToString());
return null;
}
}
lstSelect.Add((T)dr[i])