Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Collections.Generic.List.Add(T)”具有一些无效参数_C#_Generics - Fatal编程技术网

C# System.Collections.Generic.List.Add(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型,真的吗?有什么可以否决的?没有任何解释?

编辑:

我正在处理一个泛型类,它通过传递模式名表名来查询任何表,但我被困在这里了……有什么帮助吗

匹配的最佳重载方法 “System.Collections.Generic.List.AddT”具有一些无效参数

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])