내 JSON 구조있다 : I 2 JSON 구조 이제생성 HTML 테이블을 동적으로 일부 복잡성 아래
{
"list": [
{
"Variant": "V1",
"Id": 1,
"TestList": [
{
"SubVariantList": [
{
"Id": 10,
"Name": "A",
"Fluctuation":100
},
{
"Id": 20,
"Name": "B",
"Fluctuation":100
},
{
"Id": 30,
"Name": "C",
"Fluctuation":200
}
]
}
]
},
{
"Variant": "V2",
"Id": 2,
"TestList": [
{
"SubVariantList": [
{
"Id": 40,
"Name": "A",
"Fluctuation":1100
},
{
"Id": 50,
"Name": "B",
"Fluctuation":1200
},
{
"Id": 60,
"Name": "C",
"Fluctuation":1300
}
]
}
]
},
{
"Variant": "V3",
"Id": 3,
"TestList": [
{
"SubVariantList": [
{
"Id": 40,
"Name": "A",
"Fluctuation":500
},
{
"Id": 50,
"Name": "C",
"Fluctuation":600
}
]
}
]
}
]
}
이 아래 여행 : 내가 만드는 오전 위의 JSON 구조
V1:A - B - C
V2:A - C
을 바탕으로 다음과 같은 동적 테이블 :
Table1:
A - B | B - C (Headers)
VariantName AValue BValue CValue (Columns)
V1 100 100 200
V2 1100 1200 1300
Table2:
A - C (Headers)
VariantName AValue CValue (columns)
V3 500 600
나는 항상 h 1 점에서 아래와 같이 시작하는 고정 된 순서에 AVE subvariants :
A - B - C - D
먼저 고정, 나는이 같은 조합을 가질 수 있습니다 휴식됩니다
A - B - C - D
A - B - C
A - C
A- D
A - B - C - D
A - B - C
A - D
A- C
문제가 subvariants의 일부 조합과 함께 제공 아래와 같은 흐름 : 나는 테이블 구조 같은 얻고있다 위의 데이터와
V1: A - B - C
V2 : A - B - C - D
을 :
012 3,516,Table1 : <thead>
A - B | B - C
Table2:<thead>
A - B | B - C | C - D
하지만 이미 A - B 및 B - C 구조 등 아래 단 1 테이블이있을 수 있도록 시퀀스 바로 그대로 테이블에 작성된다
가Table1 : <thead>
A - B | B - C | C - D
새로운 표가 생성 될 때에 만있을 것 아래와 같이 점프 수 :
<div>
@{
var tableHeaders = new List<string>();
for (int i = 0; i < Model.Count; i++)
{
var subvariants = string.Join(",", Model[i].TestList[0].SubVariantList.Select(cd => cd.Name)); //creating unique combination
if (tableHeaders.Count == 0)
{
tableHeaders.Add(subvariants);
}
else if (!tableHeaders.Contains(subvariants))
{
tableHeaders.Add(subvariants);
}
}
}
@for (int i = 0; i < tableHeaders.Count; i++)
{
string[] subvariants = tableHeaders[i].Split(',');
<table>
<thead>
<tr>
@for (int cnt = 0; cnt < tableHeaders.Count() - 1; cnt++) // for 2 subvariants
{
<td>
@subvariants[cnt] <span>-</span> @subvariants[cnt + 1]
</td>
}
</tr>
<tr>
<th style="border: 1px solid black;">VariantName</th>
@for (int cnt = 0; cnt < subvariants.Count() - 1; cnt++)
{
if (cnt == 0)
{
<th style="border: 1px solid black;">@subvariants[cnt]</th>
}
<th style="border: 1px solid black;">@subvariants[cnt + 1]</th>
}
</tr>
</thead>
<tbody>
@for (int m = 0; m < Model.Count; m++)
{
string subvariants = string.Join(",", Model[m].TestList[0].SubVariantList.Select(cd => cd.Name));
var headers = tableHeaders[i];
if (headers.Contains(subvariants))
{
<tr>
<td>@Model[m].Variant</td>
<td>@Model[m].TestList[0].SubVariantList[0].Value</td>
@for (int j = 1; j < Model[m].TestList[0].SubVariantList.Count; j++)
{
<td>@Model[m].TestList[0].SubVariantList[j].Value</td>
}
</tr>
}
}
</tbody>
</table>
}
</div>
,536,913 :
A - C
A - D
것은이 내 코드입니다
다양한 시나리오와 하위 변이 조합으로 인해이 복잡한 논리에 갇혀 있는지 궁금합니다.
@StephenMuecke : 우선, 내 질문에 관심을 보여 주신 것에 대해 감사드립니다. 하위 변이에 대해 다음과 같은 흐름이 있습니다. A - B - C - D 등. json 구조에서 내 하위 변이 목록을 볼 수 있습니다. 나는 항상 항상 A-BC 또는 A-C 또는 A-D 등에서 하위 변이를 흘릴 것이고 그렇습니다. 저는 V1을 의미하고 variant1.i가 아니라는 것을 의미합니다. 오타가있는 것 같아요 .V1에는 A, B, C가 있습니다 (json 구조) 나는 AB처럼 테이블에 헤더를 갖고 싶다. B - C는 A에서 B, B에서 C, V3에는 A와 C가 있음을 나타내는 흐름을 나타냅니다. –
그래서 _First A 아래의 코드 스 니펫에서 고정 될 것입니다 ... _ 목록에서 'A - B - C - D'와 'A - C'및 'A - D'테이블을 만들 수 있습니까? –
그리고'B-D'와 같은 순서를 가질 수 있습니까? 그렇다면 그 테이블도 필요하겠습니까? –