0

以下のコードに相当する LINQ 式はありますか?

int noOfColumns = 10;
for (int i = 2; i <= noOfColumns+1; i++)
{                    
    sql.AppendFormat(" [{0}{1}] [varchar]({2}),", "commodity", columnLength);
}
4

4 に答える 4

3
Enumerable.Range(2, noOfColumns+1)
  .ToList()
  .ForEach(i => 
     sql.AppendFormat(" [{0}{1}] [varchar]({2}),", "commodity" columnLength));

しかし、私はそれが良く見えるとは思わない:-)。

于 2012-11-15T10:53:51.157 に答える
1

のパラメータEnumerable.Rangestartcountです。これは、for ループを直接置き換えないことを意味します。

for(var i = 5; i < 8; ++i)5 から 7 までの数を生成します。

Enumerable.Range(5, 8)5 から 12 (5+8-1) までの数字を生成します。

目的の効果を得るには、Enumerable.Range(start, end - start)使用する必要があります。

于 2015-11-19T16:23:17.497 に答える
1

価値のあるものとして、(コンパイル) Linq の置き換えは次のようになります。

IEnumerable<string> cols = Enumerable.Range(2, noOfColumns +1)
    .Select(i => string.Format(" [{0}] [varchar]({1})", "commodity", columnLength));
string sql = string.Join(",", cols);

しかし、私はあなたが何をしているのかわからないことを認めなければなりません。

于 2012-11-15T11:02:37.940 に答える
0

これを試して、

Enumerable.Range(2, noOfColumns).ToList().ForEach(r => { sql.AppendFormat(" [{0}{1}] [varchar]({2}),", "commodity" columnLength); });
于 2012-11-15T10:57:57.777 に答える