Benim foreach döngüsünü tüm koleksiyon üzerinde yineleme değil, sadece ilk öğe ve nedenini anlayamıyorum. Bulduğum tek benzer soru şuydu: IEnumerable not enumerating in foreachForeach döngüsü tüm IEnumerable üzerinde yinelenmez
Ancak tek cevap, soru yazarı tarafından yayınlandı ve IEnumerable hakkında gerçekten anlamlı olmayan bir zaman aşımıyla ilgili konuştu ve daha önce hiç duymadım .
IEnumerable<Document> documentsToAdd = dbEvent.Documents.Where(
dbd => !eventToSave.Documents.Select(d => d.DocumentId)
.Contains(dbd.DocumentId));
foreach (Document documentToAdd in documentsToAdd) {
documentToAdd.DocumentType = null;
documentToAdd.DeletedByUser = null;
documentToAdd.DocumentOwnerTeam = null;
documentToAdd.UploadedByUser = null;
documentToAdd.UploadedInStage = null;
hcDbContext.Documents.Add(documentToAdd);
}
ayıklayıcıya ben
documentsToAdd
koleksiyonunda 3 unsurlar içerdiğini görebiliriz. Ama döngüden geçtiğimde, sadece bir kez geçer ve sonra devam eder, böylece sadece ilk belge kaydedilir.
documentsToAdd
içeriğini doğruladığımdan, sorunun
Where
maddesinde olmadığını biliyorum. Koleksiyonun tamamı neden
foreach
'a girmiyor?
DÜZENLEME
Açık olmak gerekirse, hiçbir istisnası atılır. Döngüden bir kez geçiyor ve foreach
'dan sonra bir sonraki satıra geçiyor.
Bir istisna alıyorsunuz arayarak size, foreach başlamadan önce tüm sonuçların emin? Kod bir deneme yan tümce. – jdweng
İstisna yok. Sadece bir kez döngüden geçer ve foreach sonrasında bir sonraki hatta geçer. – Legion
Nasıl biliyorsunuz ** numaralandırmada birden fazla kalem var mı? – CodingGorilla