好的我會自己回答。
Xaisoft,Linq
查詢,不管是lambda表達式還是查詢表達式,都不應該用於突變列表。因此,您的Select
drivers = drivers.Select(d => { d.id = 0; d.updated = DateTime.Now; return d; }).ToList();
是不好的風格。它混淆/不可讀,不是標準,也不符合Linq
理念。實現最終結果的另一個差的風格是:
drivers.Any(d => { d.id = 0; d.updated = DateTime.Now; return false; });
但是,這並不是說ForEach
上List<T>
是不合適的。它在像你這樣的案例中找到用途,但不要將突變與Linq
查詢混合使用,即所有。我更喜歡寫這樣的:
drivers.ForEach(d => d.updated = DateTime.Now);
它的優雅和可以理解。由於它不涉及Linq
,它也不會造成混淆。我不喜歡lambda內多個語句的語法(如你的情況)。當情況變得複雜時,它的可讀性和可讀性都會降低一些。在你的情況下,我更喜歡直接foreach
循環。
foreach (var d in drivers)
{
d.id = 0;
d.updated = DateTime.Now;
}
個人而言,我喜歡ForEach
上IEnumerable<T>
as a terminating call to Linq
expression(即,如果轉讓並不意味着是一個查詢,但執行)。
[Linq副作用](http:// stackoverflow。com/questions/5632222/linq-side-effects) – nawfal