Ist es möglich, die aktuelle Position zu bestimmen, wann ein ICollection Iterieren?
-
11-10-2019 - |
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
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 tunvar _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