DataTable начиная с других DataTable

Добрый вечер, я имею по отношению ко всем следующий конфликт, создаю два DataTable в C# чтобы пробегать контент двух подмостков, которые наполняются посредством одной BD, одна показывает мне код продукта и Вашего имени, и другая объемы продукта также как и Ваш код, я нуждаюсь в том, чтобы сделать один match обоих подмостков, чтобы показывать в одном grid имя продукта и объемы каждого, и я стремлюсь в третьем DataTable Результат и хранить стоимость двух предыдущих, таблица была бы должна оставаться таким образом:

introducir la descripción de la imagen aquí

Я присоединяю код, который я разрабатываю, если кто-то знает, как делать это я буду очень благодарен.

private void ValidarInfoGrid()
{
    try
    {
        /*Objetos*/
        DataTable dtProductos = new DataTable();
        DataTable dtStock = new DataTable();
        DataTable dtResultado = new DataTable();
        /*Variables*/
        int prod1 = 0;
        int prod2 = 0;
        int prod3 = 0;
        int prod4 = 0;
        int prod5 = 0;
        int prod6 = 0;
        int codigo = 0;
        int vol1 = 0;
        int vol2 = 0;
        int vol3 = 0;
        int vol4 = 0;
        int vol5 = 0;
        int vol6 = 0;
        string producto = "";
        /*Validaciones*/
        if (cmbEstaciones!=null)
        {
            int estacion = 0;
            estacion = (int)cmbEstaciones.SelectedValue;

            if (estacion > 0)
            {
                dtStock = objVeederRoot.dtVolumenes(estacion);
                if (dtStock.Rows.Count>0)
                {
                    foreach (DataRow drStock in dtStock.Rows)
                    {
                        prod1 = Convert.ToInt32(drStock[0]);
                        vol1 = Convert.ToInt32(drStock[1]);
                        prod2 = Convert.ToInt32(drStock[2]);
                        vol2 = Convert.ToInt32(drStock[3]);
                        prod3 = Convert.ToInt32(drStock[4]);
                        vol3 = Convert.ToInt32(drStock[5]);
                        prod4 = Convert.ToInt32(drStock[6]);
                        vol4 = Convert.ToInt32(drStock[7]);
                        prod5 = Convert.ToInt32(drStock[8]);
                        vol5 = Convert.ToInt32(drStock[9]);
                        prod6 = Convert.ToInt32(drStock[10]);
                        vol6 = Convert.ToInt32(drStock[11]);
                        dtProductos = objVeederRoot.MuestraProductos();
                        foreach (DataRow drProductos in dtProductos.Rows)
                        {
                            codigo = Convert.ToInt32(drProductos[0]);
                            if (prod1 == codigo)
                            {
                                producto = drProductos[1].ToString();
                            }
                            if (prod2 == codigo)
                            {
                                producto = drProductos[1].ToString();
                            }
                            if (prod3 == codigo)
                            {
                                producto = drProductos[1].ToString();
                            }
                            if (prod4 == codigo)
                            {
                                producto = drProductos[1].ToString();
                            }
                            if (prod5 == codigo)
                            {
                                producto = drProductos[1].ToString();
                            }
                            if (prod6 == codigo)
                            {
                                producto = drProductos[1].ToString();
                            }
                            else
                            {
                                producto = "No Aplica";
                            }
                        }
                    }
                    objValidacion.MostrarAviso("Se cargaron los datos de forma Correcta", false, lblAviso);
                }
                else
                {
                    objValidacion.MostrarAviso("No se encontraron registros, intentelo nuevamente", true, lblAviso);
                }

            }
        }
    }
    catch (Exception ex)
    {
        ex.ToString();
    }
}
0
задан 05.01.2017, 03:48
0 ответов

Чтобы создавать нового DataTable с данными, которых ты просишь, это было бы должно подавать тебя (осталось бы знать реальное имя колонн или Вашего точного индекса, но я думаю, что тебе не будет сложно заменять имена, которые я выбрал из-за тех, которые соответствуют):

    // Diseñamos el nuevo DataTable con dos columnas, una para el nombre del producto
    // y otra para el volumen
    DataTable dtResultado = new DataTable();
    dtResultado.Clear();
    dtResultado.Columns.Add("Nombre", typeof(string));
    dtResultado.Columns.Add("Volumen", typeof(int));

    // Por cada producto...
    foreach (DataRow row in dtProductos.Rows)
    {
        // Creamos un nuevo row con el esquema definido anteriormente para dtResultado
        DataRow resultRow = dtResultado.NewRow();
        resultRow["Nombre"] = row["Nombre"].ToString();

        // Buscamos el volumen para ese producto en dtStock
        DataRow stockRow = dtStock.AsEnumerable()
                                  .Single(r => Convert.ToInt32(r["Codigo"]) == Convert.ToInt32(row["Codigo"]));

        resultRow["Volumen"] = Convert.ToInt32(stockRow["Volumen"]);

        // Añadimos nuevo registro al DataTable
        dtResultado.Rows.Add(resultRow);
    }

Сейчас только тебе останется связывать dtResult grid после цикла.

0
ответ дан 03.12.2019, 17:52