1

重複の可能性:
C#構文-Lambda式の例-汎用リスト上のForEach()

コードを単純化して、もっと短くて読みやすいコードに変更したいと思います。

List<string> onlineModelsNumbers = new List<string>();

foreach (OnlineModel om in OnlineModels)
    onlineModelsNumbers.Add(om.model_id.ToString());

ここでは、ラムダ式で同じことを書くことを考えています。しかし、どうすればそれを行うことができますか?

List<string> onlineModelsNumbersL = onlineModelsNumbers.ForEach(...)

また

List<string> onlineModelsNumbersL = new List<string>(onlineModelsNumbers.ForEach(...))

他に何か提案はありますか?

4

8 に答える 8

5
List<string> onlineModelsNumbers = OnlineModels.Select(om => om.model_id.ToString()).ToList();
于 2012-12-27T14:48:48.197 に答える
3

どうですか:

onlineModelsNumbers.AddRange(OnlineModels.Select(o => o.model_id.ToString());
于 2012-12-27T14:48:52.363 に答える
3
var onlineModelsNumbers = OnlineModels.Select(m => m.model_id.ToString())
                                      .ToList();
于 2012-12-27T14:49:23.183 に答える
0

LINQには意図的に拡張機能が付属していませんForEach(LINQ関数が純粋なままであるように)が、をラップする独自の拡張機能を簡単に作成できますforeach

于 2012-12-27T14:48:33.800 に答える
0

あなたのコードはすでに単純です。暗黙的に型指定されたループ変数の使用を検討できます。

foreach(var om in OnlineModels)
{
    onlineModelNumbers.Add(om.model_id.ToString());
}

または、次を使用できますAddRange

onlineModelNumbers.AddRange(OnlineModels.Select(om => om.model_id.ToString()));
于 2012-12-27T14:49:01.570 に答える
0

ここではforeachは必要ありません。selectがそれを行います。

IEnumerable<string> = OnlineModels.Select(x => x.model_id.ToString());
于 2012-12-27T14:49:16.430 に答える
0

変換して範囲として追加するだけです。

List<string> onlineModelsNumbers = new List<string>(OnlineModels.Select(om => om.model_id.ToString()));
于 2012-12-27T14:49:51.127 に答える
0

OnlineModelsのすべてのメンバーに対して「foreach」を実行し、その結果、モデルのmodel_id文字列表現をonlineModelsNumbersに追加する必要があります。

次のように式を書くことを期待しています。

onlineModels.ForEach(om => onlineModelsNumbers.Add(om.model_id.ToString()))
于 2012-12-27T14:51:58.353 に答える