Listelerin Linq listesi tek listeye


202

Bu zaten cevaplanmış bir şey gibi görünüyor ama bulamıyorum.

Benim sorum oldukça basit, bu nasıl bir liste içinde boş liste yeni ve daha sonra sonraki satırda toplamak zorunda, ben son listeyi çıktı tek bir linq deyimi olabilir nasıl yapabilirim. detaylar her konut listesi içeren öğelerin bir listesidir, sadece tüm konutları düz bir listede istiyorum.

var residences = new List<DAL.AppForm_Residences>();
details.Select(d => d.AppForm_Residences).ToList().ForEach(d => residences.AddRange(d));

Yanıtlar:


317

SelectManyUzantı yöntemini kullanmak istiyorsunuz .

var residences = details.SelectMany(d => d.AppForm_Residences).ToList();

3
Teşekkürler. @JaredPar yanlış öğeden seçim yapıyor, ancak her ikiniz de yardımınız için teşekkür ederiz.
Jarrett Widman

51

SelectMany kullanın

var all = residences.SelectMany(x => x.AppForm_Residences);

35

İşte sizin için örnek bir kod:

List<int> listA = new List<int> { 1, 2, 3, 4, 5, 6 };

List<int> listB = new List<int> { 11, 12, 13, 14, 15, 16 };

List<List<int>> listOfLists = new List<List<int>> { listA, listB };

List<int> flattenedList = listOfLists.SelectMany(d => d).ToList();

foreach (int item in flattenedList)
{
    Console.WriteLine(item);
}

Ve dışarı koymak olacak:

1
2
3
4
5
6
11
12
13
14
15
16
Press any key to continue . . .

29

Ve sorgu ifadesi sözdizimi isteyenler için: İki kullanmak gelen ifadeleri

var residences = (from d in details from a in d.AppForm_Residences select a).ToList();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.