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