2016-04-06 85 views
-3

雖然下面的代碼工作正常,我想知道是否有一個更清潔的方式來完成這與lambda表達式?試圖學習更好的lambda編碼

var counter = 1; 

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

LINQ的基本上沒有設計用於更新,但對於查詢數據。所以這根本不可能,甚至不需要。這個漂亮的短代碼是什麼? ! – HimBromBeere

+0

@HimBromBeere的LINQ =拉姆達 – fubo

+1

參見以下網頁: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已經指出的那樣 - 這是更多的LAMBDA技術問題表達式 – fubo