2014-06-12 18 views
11

Aşağıdaki foreach linq ifadesine nasıl dönüştürülür?Foreach ifadesini linq ifadesine nasıl dönüştürebilirim?

var list = new List<Book>(); 

foreach (var id in ids) 
{ 
    list.Add(new Book{Id=id}); 
} 
+0

Bir linq ifadesi gibi basit bir deyim yazmak için herhangi bir sebep var mı? Bir foreach olarak muhtemelen daha okunaklı. – Mephy

+2

Resharper sizin için tek tıklama ile yapar :-) –

cevap

16

Oldukça yalındır var:

var list = ids.Select(id => new Book { Id = id }).ToList(); 

Yoksa sorgu sözdizimi isterseniz:

var list = (from id in ids select new Book { Id = id }).ToList(); 

Ayrıca eğer gerçekten List<Book> gerekiyorsa ToList() sadece gerekli olduğunu unutmayın. Aksi takdirde, Linq'in temkinli değerlendirme yeteneklerinden yararlanmak ve Book nesnelerin sadece talep üzerine oluşturulmasına izin vermek daha iyidir.

+0

Bu LINQ sözdizimini istemese de. 'ids içindeki x'den yeni bir kitap seçin {Id = x}' LINQ gibi daha fazla hissediyor. –

+2

@RandRandom Bu kesinlikle LINQ sözdizimi, sorgu sözdiziminin tersine sadece LINQ yöntemi sözdizimi. Ancak, her ikisi de hala (bu durumda), Linq-to-objects kullanmaktadır. Bkz. Http://msdn.microsoft.com/en-us/library/bb397947.aspx –

+0

@RandRandom Tamlık için eklenmiş sorgu sözdizimi. –

1
var list = ids.Select(id => new Book(id)).ToList(); 
+4

Kitabın böyle bir yapıcı olması durumunda budur. – VahidNaderi

İlgili konular