2016-11-23 44 views
0
Model.Results 

是保存結果模型列表的列表對象。通過類型在列表中對項目進行配對,並在一個循環中顯示在視圖中

public List<result> Results {get; set;} 

class result 
{ 
    public int Id {get; set;} 
    public int resultId {get; set;} 
    public string resultName {get; set;} 
    public int resultTypeId {get; set;} 
    public string resultValue {get; set;} 
} 

我現在需要做的是顯示其是直線前進認爲名單:

@foreach(var result in Model.Results) 
{ 
    <ul> 
    <li> @result.resultName</li> 
    <li> @result.resultValue</li> 
    </ul> 
} 

但我需要做的是檢查resultTypeId是一樣的我要顯示結果值在同一行上:

@foreach(var result in Model.Results) 
{ 
    <ul> 
    <li> @result.resultName</li> 
    @if(result.resultTypeId == any other result.resultTypeId in the list) 
    { 
     <li> @result.resultValue - @the other result.resultValue</li> 
     } 
    @else 
    { 
     <li> @result.resultValue</li> 
    } 
    </ul> 
} 

請讓我知道如果您需要我說明更多。當我看到邏輯時,它看起來很直接,但是當我開始編碼時,我無法看到它的方向。

在此先感謝。

+0

是'-'減法還是分隔符? – Sefe

+0

對不起,沒有說清楚。這是一個分隔符 – MohammedT

回答

1

您可以將您的項目由ID:

@foreach(var resultGroup in Model.Results.GroupBy(result => result.resultTypeId)) 
{ 
    <ul> 
    <li> @resultGroup.First().resultName</li> 
    @foreach (var result in resultGroup) { 
     <li> @result.resultValue</li> 
    } 
    </ul> 
} 
+0

我喜歡這個答案!簡單而整潔,無需創建額外的對象!非常感謝@Sefe! – MohammedT

1

在模型中創建一個返回所有resultTypeId作爲一個列表屬性:

public IEnumerable<int> ResultsTypeIds 
{ 
    get 
    { 
     return Results.DistinctBy(x=>x.resultTypeId).Select(x=>x.resultTypeId);  
    } 
} 

在你看來,你可以再itterate超過該集合

@foreach(var resultTypeId in Model.ResultsTypeIds) 
{ 
    <ul> 
    @foreach(var result in Model.Results) 
    { 
     <li>@result.resultValue</li> 
    } 
    </ul> 
} 
1

我會建議格式化您的數據的方式視圖希望它是,如:

Model.Results.GroupBy(r=>r.resultTypeId) 
    .Select(gr=>new {resultTypeId = gr.Key, resultName = gr.First().resultName, Items = gr.ToList()}) 
    .ToList(); 

不是在視圖只是遍歷組和項目各組:

@foreach(var group in Model.GroupedResults) 
{ 
    <ul> 
    <li> @group.resultName</li> 
    <li> 
    @foreach(var item in group.Items) 
    { 
     @item.resultValue <br/> 
    } 
    </li> 
    </ul> 
} 

你可能想別的東西作爲視圖的標記,但它應該給你理念。

+0

非常感謝。我喜歡按照視圖預期的方式來格式化數據的建議。由於良好的做法,應該成爲公認的答案! – MohammedT

相關問題