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

在一条线上做所有事情怎么样?

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 回答