以下のコードに相当する 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));
しかし、私はそれが良く見えるとは思わない:-)。
のパラメータ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)
使用する必要があります。
価値のあるものとして、(コンパイル) 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(2, noOfColumns).ToList().ForEach(r => { sql.AppendFormat(" [{0}{1}] [varchar]({2}),", "commodity" columnLength); });