이것이 이미 답변되었지만 찾을 수없는 종류의 것 같습니다.
내 질문은 매우 간단합니다. 한 목록 에서이 작업을 수행하여 빈 목록을 새로 작성하고 다음 줄에서 집계하는 대신 최종 목록을 출력하는 단일 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();