Pertanyaan Multi-line foreach loop di linq / lambda


Saya mencari cara untuk mengubah kode berikut:

foreach (Contact _contact in contacts)
{
    _contact.ID = 0;
    _contact.GroupID = 0;
    _contact.CompanyID = 0;
}

Saya ingin mengubah ini menggunakan LINQ / lambda menjadi sesuatu yang mirip dengan:

contacts.ForEach(c => c.ID = 0; c.GroupID = 0; c.CompanyID = 0);

Namun itu tidak berhasil. Apakah ada cara untuk melakukan multi-baris dalam linq foreach selain dengan menulis fungsi untuk melakukan ini dalam satu baris?


38
2017-10-17 02:23


asal


Jawaban:


contacts.ForEach(c => { c.ID = 0; c.GroupID = 0; c.CompanyID = 0; });

Itu tidak ada hubungannya dengan LINQ per se; itu hanya metode anonim sederhana yang ditulis dalam lambda sintaksis diteruskan ke List<T>.ForEach function (yang ada sejak 2.0, sebelum LINQ).


64
2017-10-17 02:27



LINQ adalah singkatan dari Language Integrated Pertanyaan - yang berarti itu dimaksudkan untuk query - yaitu mengekstraksi atau mengubah urutan menjadi rangkaian baru, tidak memanipulasi yang asli.

Itu ForEach metode hang List<T> dan merupakan pintasan kenyamanan untuk foreach; tidak ada yang spesial.


3
2017-10-17 02:27