Question

Je le code suivant:

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

Je dois ajouter dans cette boucle sur chaque .Appened("or ") d'itération, sauf le dernier.

Toute idée de comment je peux savoir quand je situe sur la dernière itération ici?

Était-ce utile?

La solution

je le ferais dans l'autre sens - le traitement de la première que l'exception est plus simple:

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

ou .NET 4.0 simplement utiliser:

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

ou encore mieux, si cela est SQL - passer à IN ...

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

Autres conseils

Qu'en est-il de faire en une seule ligne?

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

P.S. Si vous ciblez .net 4.0, vous pouvez sauter le .ToArray()

J'ai tendance à faire

var _sqlString = new StringBuilder();
foreach(string reelid in unValidatedFeedersOnMachine.Keys) {                     
    if(_sqlString.ToString().Length != 0) {
        _sqlString.Appened(" or ")
    }
    _sqlString.Append("CompID = '").Append(reelid).Append("' ");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top