Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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# 用数组替换列表_C#_Arrays_List_Sqlcommand - Fatal编程技术网

C# 用数组替换列表

C# 用数组替换列表,c#,arrays,list,sqlcommand,C#,Arrays,List,Sqlcommand,我有以下方法,如下所示: public static string loadLista(string pStrOp) { System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["WXYZ"].ConnectionString); System.Data

我有以下方法,如下所示:

public static string loadLista(string pStrOp)
{
    System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["WXYZ"].ConnectionString);
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("select distinct RTRIM(LTRIM(c.str_val)) as Id , RTRIM(LTRIM(c.str_val)) as Value " +
                                                                                "from dbo.toc a " +
                                                                                "inner join dbo.propval c on c.tocid = a.tocid and c.PROP_ID = 698 " +
                                                                                "where a.pset_id = 114 and c.str_val is not null " +
                                                                                "order by 2 asc;", conn);


    var items = new List<Parametro>();


    try
    {
        conn.Open();

        using (var dr = cmd.ExecuteReader())
        {
            if (dr.HasRows)
            {

                 int fc = dr.FieldCount;
                 var colums = new Dictionary<int, string>();
                 for (int i = 0; i < fc; i++)
                   colums.Add(i, dr.GetName(i));

                object[] values = new object[fc];

                while (dr.Read())
                {

                dr.GetValues(values); //Get All Values
                Parametro item = Activator.CreateInstance<Parametro>();
                var props = item.GetType().GetProperties();

                foreach (var p in props)
                {
                    foreach (var col in colums)
                    {
                        if (p.Name != col.Value) continue;
                        var value = values[col.Key];
                        if (value.GetType() != typeof(DBNull))
                        {
                            p.SetValue(item, value, null);
                        }   
                    }

                }

                items.Add(item);

                }

            }
        }
    }
    catch (Exception ex)
    {
        return new System.Web.Script.Serialization.JavaScriptSerializer().Serialize("");
    }

    return new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(items);
}
如您所见,我使用SqlCommand进行查询,然后将其存储在DataReader中以处理数据,最后将其保存在列表中。这个方法工作得很好,问题是我如何在这个方法中替代列表的使用,而是使用数组,因为我有一个限制,阻止我使用列表。
如果你能给我一个应用的例子,那将非常有帮助。提前感谢您提供的帮助。

我不太明白您为什么不能使用列表,您应该先弄清楚这一点,但是出于学术目的

将一维数组的元素数更改为 指定的新大小

评论

此方法分配一个具有指定大小的新数组,即副本 元素,然后替换旧数组 具有新数组的数组。数组必须是一维数组

如果数组为null,则此方法将使用指定的 尺寸

因此,与其使用列表

注意,这是相当低效的,当列表必须在内部增加阵列时,它实际使用的容量设置为所需容量的2倍


免责声明:未经测试,可能存在键入错误

您可以随时调用列表中的阵列-阵列的问题是您无法轻松更改其大小,但您可以轻松地将项目添加到列表中。若你们解释为什么你们不能使用列表,也许可以找到一个不同的解决方案。我还想说,吞下任何异常,仅仅返回一个空结果是并没有帮助的。您不知道异常是什么,也不知道是什么原因导致它知道要修复什么。@DStanley问题是我不能使用列表,例如在定义var items=new List时;我在代码中有一个错误,此方法应在已实现的解决方案中工作,不识别列表的问题应针对解决方案中的程序集,但添加用于列表工作的程序集可能会对其他功能产生影响,这就是为什么在第一个实例中,提议的是用安排来代替列表的使用。我不明白问题是什么。列表在mscorlib中,所以不应该添加额外的程序集。@DStanley-他们显然不知道自己在说什么。我想你需要读一本关于编程的书。这是一个根本性的缺乏理解的问题,可能真的很烦人-只需拿起一本书或做一些关于列表和数组的.Net教程。YW我无法抗拒递归元素:-
Parametro[] items;

...

Array.Resize(items, (items?.Length ?? 0) +1 ) // resize
items[items.Length-1] = item; // add item to the last index