Как создать массив типа с наличием списка объектов подобного типа в C #

голоса
0

У нас есть класс третьей стороны, которая принимает только массивы объекта.

Третий класс партии:

public class Test
{
    public class Input
    {

        public int testVar { get; set; }
        public int testVar2 { get; set; }
    }
    //some methods

    public static List<someType> Convert(Input[] data)
    {
        //execute some steps 
    }
}

в БД, то есть столбец данных, который нас интересует, и она имеет тысячи записей.

Id        data

    1   new Test.Input{ testVar=12,testVar=19}
    2   new Test.Input{ testVar=16,testVar=12}
    3   new Test.Input{ testVar=26,testVar=11}
    -

Я пытаюсь создать класс и вызвать метод Преобразовать класс Test, предоставляя массив объектов типа ввода.

public class ImplementTest
{
    public void CallConvert()
    {
        // get the data from DB in list
        List<object> Input = new List<object>();
        using (SqlConnection con = new SqlConnection(conString))
        {
            using (SqlCommand cmd = new SqlCommand())
            {

                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.CommandText = dbo.ReadAll_Input;

                con.Open();

                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        Input.Add(dr[data]);
                    }
                }
            }
        }

        //convert list object to input type object  
        var inputs = new Test.Input[]
        {
           //how to pass Input list efficiently
        };

        var output = Test.Convert(inputs).ToArray();
    }
}

может кто-нибудь мне помочь в прохождении входного списка объект эффективно создать массив объектов, пожалуйста?

Спасибо!

Задан 19/09/2018 в 13:35
источник пользователем
На других языках...                            


1 ответов

голоса
1

Вы можете использовать метод Mapper:

public Input MapRow(IDataRecord row)
{
    return new Input
    {
        Name = row["Name"].ToString(),
        Number = int.Parse(row["Number"].ToString())
    };
}

И использовать его как это:

public void CallConvert()
{
        // get the data from DB in list
    List<Input> inputs = new List<Input>();
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlCommand cmd = new SqlCommand())
        {

            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.CommandText = "dbo.ReadAll_Input";

            con.Open();

            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    inputs.Add(MapRow(dr));
                }
            }
        }
    }

    var output=Test.Convert(inputs.ToArray());
}

И чтобы сделать его работу, ваш StoreProcedure должен возвращать таблицу входов с, в этом случае, две колонки (Name, Number)

Ответил 19/09/2018 в 14:04
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more