Frage

Ich habe den folgenden Code:

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

Ich brauche in dieser Schleife bei jeder Iteration .Appened("or ") mit Ausnahme der letzten hinzuzufügen.

Jede Idee, wie ich kann wissen, wenn ich hier auf der letzten Iteration liegt

War es hilfreich?

Lösung

Ich würde es anders machen um - die erste als Ausnahme zu behandeln, ist einfacher:

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

oder in .NET 4.0 nur verwenden:

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

oder noch besser, wenn dies SQL - Schalter auf IN ...

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

Andere Tipps

Was ist alles in einer Zeile zu tun?

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

P. S.
Wenn Sie Targeting .net 4.0 können Sie die .ToArray() überspringen

Ich neige dazu, diese

zu tun
var _sqlString = new StringBuilder();
foreach(string reelid in unValidatedFeedersOnMachine.Keys) {                     
    if(_sqlString.ToString().Length != 0) {
        _sqlString.Appened(" or ")
    }
    _sqlString.Append("CompID = '").Append(reelid).Append("' ");
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top