次のコードがあります。
foreach(string reelid in unValidatedFeedersOnMachine.Keys)
{
_sqlString.Append("CompID = '").Append(reelid).Append("' ");
}
.Appened("or ")
最後のループを除く各反復でそのループを追加する必要があります。
ここで最後の反復をいつ見つけたかを知る方法はありますか?
次のコードがあります。
foreach(string reelid in unValidatedFeedersOnMachine.Keys)
{
_sqlString.Append("CompID = '").Append(reelid).Append("' ");
}
.Appened("or ")
最後のループを除く各反復でそのループを追加する必要があります。
ここで最後の反復をいつ見つけたかを知る方法はありますか?
私はそれを逆にします-最初のものを例外として扱う方が簡単です:
bool first = true;
foreach(string reelid in unValidatedFeedersOnMachine.Keys)
{
if(first) {first = false;}
else {_sqlString.Append(" or ";}
_sqlString.Append("CompID = '").Append(reelid).Append("' ");
}
または.NET 4.0では次を使用します。
string s = string.Join(" or ",
from key in unValidatedFeedersOnMachine.Keys
select "CompID = '" + reelid + "'");
またはさらに良いことに、これがSQLの場合-に切り替えIN
ます...
string s = "CompID IN (" + string.Join(","
from key in unValidatedFeedersOnMachine.Keys
select "'" + reelid + "'") + ")";
すべてを1行で行うのはどうですか?
string query = string.Join(" or ", unValidatedFeedersOnMachine.Keys.Select(x => "CompID = '" + x + "'").ToArray())
PS
.net 4.0 を対象としている場合は、.ToArray()
私はこれをする傾向があります
var _sqlString = new StringBuilder();
foreach(string reelid in unValidatedFeedersOnMachine.Keys) {
if(_sqlString.ToString().Length != 0) {
_sqlString.Appened(" or ")
}
_sqlString.Append("CompID = '").Append(reelid).Append("' ");
}