[C#] Linq 목록을 단일 목록으로

이것이 이미 답변되었지만 찾을 수없는 종류의 것 같습니다.

내 질문은 매우 간단합니다. 한 목록 에서이 작업을 수행하여 빈 목록을 새로 작성하고 다음 줄에서 집계하는 대신 최종 목록을 출력하는 단일 linq 문을 가질 수 있습니다. 세부 사항은 각각 거주지 목록을 포함하는 항목의 목록입니다. 모든 거주지를 평평한 목록으로 원합니다.

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



답변

SelectMany확장 방법 을 사용하려고합니다 .

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


답변

SelectMany 사용

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


답변

다음은 샘플 코드입니다.

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 . . .


답변

쿼리 식 구문을 원하는 사람들에게는 두 가지 from 문 을 사용합니다.

var residences = (from d in details from a in d.AppForm_Residences select a).ToList();


답변