2

次のコードがあります。

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

.Appened("or ")最後のループを除く各反復でそのループを追加する必要があります。

ここで最後の反復をいつ見つけたかを知る方法はありますか?

4

3 に答える 3

5

私はそれを逆にします-最初のものを例外として扱う方が簡単です:

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 + "'") + ")";
于 2011-01-17T07:50:56.007 に答える
4

すべてを1行で行うのはどうですか?

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

PS
.net 4.0 を対象としている場合は、.ToArray()

于 2011-01-17T07:49:16.620 に答える
0

私はこれをする傾向があります

var _sqlString = new StringBuilder();
foreach(string reelid in unValidatedFeedersOnMachine.Keys) {                     
    if(_sqlString.ToString().Length != 0) {
        _sqlString.Appened(" or ")
    }
    _sqlString.Append("CompID = '").Append(reelid).Append("' ");
}
于 2011-01-17T07:49:24.403 に答える