एकल सूची के लिए सूची की लाइनक सूची


201

ऐसा लगता है कि इस तरह की बात है जो पहले ही उत्तर दे दी गई है लेकिन मैं इसे खोजने में असमर्थ हूं।

मेरा प्रश्न बहुत आसान है, मैं इसे एक बयान में कैसे कर सकता हूं ताकि खाली सूची को नई करने और फिर अगली पंक्ति में एकत्र करने के बजाय, मैं एक एकल लाइनक कथन रख सकूं जो मेरी अंतिम सूची का उत्पादन करता है। विवरण उन मदों की एक सूची है जिनमें से प्रत्येक में निवास की एक सूची है, मैं बस एक फ्लैट सूची में सभी आवासों को चाहता हूं।

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

जवाबों:


316

आप SelectManyएक्सटेंशन विधि का उपयोग करना चाहते हैं ।

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

3
धन्यवाद। @JaredPar में गलत तत्व से चयन है, लेकिन आपके मार्गदर्शन के लिए आप दोनों का धन्यवाद।
जेरेट विडमैन

51

SelectMany का उपयोग करें

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

35

यहाँ आपके लिए एक नमूना कोड है:

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);
}

और बाहर रखा जाएगा:

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

29

और उन लोगों के लिए जो क्वेरी अभिव्यक्ति सिंटैक्स चाहते हैं: आप दो बयानों से उपयोग करते हैं

var residences = (from d in details from a in d.AppForm_Residences select a).ToList();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.