Pregunta

Tengo el siguiente código:

foreach(string reelid in unValidatedFeedersOnMachine.Keys)
{
    _sqlString.Append("CompID = '").Append(reelid).Append("' ");
}

Tengo que añadir que en bucle en cada iteración .Appened("or ") excepto la última.

alguna idea de cómo puede saber cuando se encuentra en la última iteración aquí?

¿Fue útil?

Solución

lo haría al revés - el tratamiento de la primera como la excepción es más simple:

bool first = true;
foreach(string reelid in unValidatedFeedersOnMachine.Keys)
{
   if(first) {first = false;}
   else {_sqlString.Append(" or ";}
    _sqlString.Append("CompID = '").Append(reelid).Append("' ");
}

o en .NET 4.0 solo uso:

string s = string.Join(" or ",
           from key in unValidatedFeedersOnMachine.Keys
           select "CompID = '" + reelid + "'");

o, mejor aún, si se trata de SQL - cambiar a IN ...

string s = "CompID IN (" + string.Join(","
           from key in unValidatedFeedersOnMachine.Keys
           select "'" + reelid + "'") + ")";

Otros consejos

Lo que trata de hacer todo en una línea?

string query = string.Join(" or ", unValidatedFeedersOnMachine.Keys.Select(x => "CompID = '" + x + "'").ToArray())

P.S.
Si usted está apuntando .NET 4.0, puede omitir la .ToArray()

tiendo a hacer esto

var _sqlString = new StringBuilder();
foreach(string reelid in unValidatedFeedersOnMachine.Keys) {                     
    if(_sqlString.ToString().Length != 0) {
        _sqlString.Appened(" or ")
    }
    _sqlString.Append("CompID = '").Append(reelid).Append("' ");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top