다음 데이터 구조가 있고 RelationId를 기반으로 계층 구조에 숨김을 넣으려고합니다. 이것은 RelationId에서 정렬됩니다.숫자 시퀀스를 기준으로 개체를 계층 구조로 변환
Id = 2는 relationId = 2이고 다음 두 행에는 realtionId = 0이 있습니다. (리스트로 나타내는 간략화를 위해) 다음으로 = 2
Id Name RelationId SortOrder
1 A 1 1
2 B 2 2
3 C 0 3
4 D 0 4
5 E 3 5
6 F 0 6
7 G 0 7
8 H 4 8
최종 결과
Id = 1
|
Id = 2
|___ Id = 3 , Id = 4
Id = 5
|___ Id= 6 , Id=7
Id = 8
원하는 결과를 다음과 같이 표시 될 이드 아이 즉, 식 (3) 및 식 (4)을 대표한다 있습니다 . 이것은 C#에서 List<Something>
것
Result =
[
{ Id = 1, Name = A, Children = Null },
{ Id = 2, Name = B, Children = [{ Id = 3, Name = C }, {Id = 4, Name = D }] },
{ Id = 5, Name = E, Children = [{ Id = 6, Name = F }, {Id = 7, Name = G }] },
{ Id = 8, Name = H}
]
내 시도가 실패한 내가 이런 식으로했을
var finalResult = new List<sampleDataClass>();
var sampleData = GetMeSampleData();
var count = sampleData.Count();
foreach (var item in sampleData)
{
var alreadyExist = finalResult.Any(x => x.Id == item.Id);
var newObject = new sampleDataClass();
if (!alreadyExist && item.RelationId!= 0)
{
newObject = item;
}
for (int i = item.SortOrder; i < count; i++)
{
if (sampleData[i].RelationId== 0)
{
newObject.Children.Add(sampleData[i]);
}
}
finalResult.Add(newObject);
}
? 그리고 최상위 수준의 부모라는 의미로 0이나 -1 등을 사용 하시겠습니까? – juharr
그것은 정렬 된 배열이고 relationId = 1은 최상위 레벨입니다 – InTheWorldOfCodingApplications
sortOrder 필드도 추가했습니다 – InTheWorldOfCodingApplications