是否有等同于以下代码的 LINQ 表达式?
int noOfColumns = 10;
for (int i = 2; i <= noOfColumns+1; i++)
{
sql.AppendFormat(" [{0}{1}] [varchar]({2}),", "commodity", columnLength);
}
是否有等同于以下代码的 LINQ 表达式?
int noOfColumns = 10;
for (int i = 2; i <= noOfColumns+1; i++)
{
sql.AppendFormat(" [{0}{1}] [varchar]({2}),", "commodity", columnLength);
}
Enumerable.Range(2, noOfColumns+1)
.ToList()
.ForEach(i =>
sql.AppendFormat(" [{0}{1}] [varchar]({2}),", "commodity" columnLength));
但我不认为它看起来更好:-)。
对于它的价值,(编译)Linq 替换将是:
IEnumerable<string> cols = Enumerable.Range(2, noOfColumns +1)
.Select(i => string.Format(" [{0}] [varchar]({1})", "commodity", columnLength));
string sql = string.Join(",", cols);
但我必须承认,我不知道你在做什么。
的参数Enumerable.Range
是start
和count
。这意味着它不会直接替换 for 循环。
for(var i = 5; i < 8; ++i)
将产生从 5 到 7 的数字。
Enumerable.Range(5, 8)
将产生从 5 到 12 (5+8-1) 的数字。
要获得预期的效果,Enumerable.Range(start, end - start)
就需要使用。
试试这个,
Enumerable.Range(2, noOfColumns).ToList().ForEach(r => { sql.AppendFormat(" [{0}{1}] [varchar]({2}),", "commodity" columnLength); });