Hoy temprano (con la ayuda de aquí) creamos el siguiente código.

var sLines = File.ReadAllLines("//dnc/WaterJet/MTI-WJ/" + cboPartProgram.Text)
                 .Where(s => !s.StartsWith("'") && s.Contains("S"))
                 .Select(s => new
                     {
                         SValue = Regex.Match(s, "(?<=S)[\\d.]*").Value
                     })
                 .ToArray();

foreach (var lines in sLines)
{
    double sTime = double.Parse(lines.SValue);
}

Más abajo en la aplicación, la vista de cuadrícula de datos se completa a partir de una lista, una lista creada por los resultados de una declaración SQL.

foreach (WjDwellOffsets offset in dwellTimes)
{
    origionalDwellOffsets.Add(offset.dwellOffset);

    dgvDwellTimes.Rows.Add(new object[] { offset.positionId, sTime, offset.dwellOffset, 0, offset.dwellOffset, "Update", (offset.dateTime > new DateTime(1900, 1, 1)) ? offset.dateTime.ToString() : "" });
    DataGridViewDisableButtonCell btnCell = ((DataGridViewDisableButtonCell)dgvDwellTimes.Rows[dgvDwellTimes.Rows.Count - 1].Cells[5]);
    btnCell.Enabled = false;
}

Como puede ver, solo puse sTime allí para mostrar dónde lo necesito. Pero claramente esto no funcionará, 1 porque está fuera de contexto y de cualquier forma que he intentado incorporar esto duplica todo o peor porque estoy recorriendo el archivo, pero luego estoy recorriendo lo que se agregó a la cuadrícula de datos, etc. ¿Cómo puedo incorporar sTime resultados (que son 80 líneas) con las 80 líneas de la lista que se está llenando en datagridview? No estoy seguro de cómo combinar los resultados de sTime en la cuadrícula sin estropearlo.

-3
Lee 14 dic. 2016 a las 21:29

2 respuestas

La mejor respuesta

Si entiendo tu problema correctamente, estás buscando esto:

Dado que ambos bucles tienen el mismo límite de contador (80 en su caso), y no parecen requerir una separación, simplemente puede fusionarlos en un solo bucle for normal.

double stime;

for (int i = 0; i < sLines.Count(); i++)
{
    sTime = double.Parse(sLines[i].SValue); // Or sLines.ElementAt(i)

    origionalDwellOffsets.Add(dwellTimes[i].dwellOffset); // Or dwellOffset.ElementAt(i)

    dgvDwellTimes.Rows.Add(new object[] { dwellTimes[i].positionId, sTime, dwellTimes[i].dwellOffset, 0, dwellTimes[i].dwellOffset, "Update", (dwellTimes[i].dateTime > new     DateTime(1900, 1, 1)) ? dwellTimes[i].dateTime.ToString() : "" });
    DataGridViewDisableButtonCell btnCell = ((DataGridViewDisableButtonCell)dgvDwellTimes.Rows[dgvDwellTimes.Rows.Count - 1].Cells[5]);     
}
0
Mat 15 dic. 2016 a las 21:15
double sTime ;              

var sLines = File.ReadAllLines("//dnc/WaterJet/MTI-WJ/" +   cboPartProgram.Text)
                 .Where(s => !s.StartsWith("'") && s.Contains("S"))
                 .Select(s => new
                     {
                         SValue = Regex.Match(s, "(?<=S)[\\d.]*").Value
                     })
                 .ToArray();

foreach (var lines in sLines)
{
    sTime = double.Parse(lines.SValue);
}

foreach (WjDwellOffsets offset in dwellTimes)
{
    origionalDwellOffsets.Add(offset.dwellOffset);

    dgvDwellTimes.Rows.Add(new object[] { offset.positionId, sTime, offset.dwellOffset, 0, offset.dwellOffset, "Update", (offset.dateTime > new DateTime(1900, 1, 1)) ? offset.dateTime.ToString() : "" });
    DataGridViewDisableButtonCell btnCell = ((DataGridViewDisableButtonCell)dgvDwellTimes.Rows[dgvDwellTimes.Rows.Count - 1].Cells[5]);            
}

btnCell.Enabled = false;
0
Mat 14 dic. 2016 a las 19:44