2016-04-06 6 views
-3

次のコードはうまくいきますが、ラムダ式でこれを達成するためのよりクリーンな方法があるのでしょうか?ラムダコーディングを学ぼうとすると

var counter = 1; 

foreach (var item in model) 
{ 
    item.ID = counter++; 
} 
+5

Linqは、基本的に更新のために設計されたものではなく、データのクエリ用に設計されています。だから、これは単に不可能であり、必要でさえありません。この素敵な短いコードは何が間違っていますか? – HimBromBeere

+0

@HimBromBeere Linq!= Lambda – fubo

+1

次のWebページを参照してください。https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng

答えて

4

あなたはインラインラムダのForEach

model.ForEach(x => x.ID = counter++); 

を更新/制限作ることができます:modelが値型の場合にはList<>

  • を入力するときに、これはのみ動作します

    • をアイテムは更新されません - エラーなし
  • +4

    これは技術的に正しいものですが、多くの場合、これは '悪い練習 '/'コードのにおい 'など... – Fabjan

    +2

    @fubo、なぜあなたはそのモデルが 'List'だと思いますか? – ASh

    +0

    @ASh - あなたが正しいです、それ以外の場合は動作しませんし、 'Model.ToList()。ForEach()'でなければなりませんが、Fabjanがすでに指摘しているように - これはラムダ式に関する技術的な質問でした – fubo

    関連する問題