如何在html数据表视图中显示IEnumerable数据分组ID?

时间:2019-04-18 15:41:51

标签: c# asp.net-mvc html-table view ienumerable

我有一个数据表,需要对这些值进行分组,因为只有一列(Pax)没有重复的数据,而其他数据则希望显示在一行中。

是这样的: Actual

并且应为: Should be

Points.Value_X

一列具有不同的数据,其他数据预计将显示在一行中。

1 个答案:

答案 0 :(得分:0)

如果您创建一个可以反映您要显示的数据的模型,则会更容易。这样,操作就可以在代码中进行,并且视图仅遵循模型中的内容。

这不是最优雅的例子。考虑一下它是一个例子。

你有这个:

public class TheModelYouHave
{
    public string Servico { get; set; }
    public string DescTipo { get; set; }
    public string StatusReserva { get; set; }
    public string IdentReserva { get; set; }
    public string PaxsReserva { get; set; }
}

您想要的是什么

public class TheModelYouWant
{
    public Dictionary<string, IEnumerable<TheModelYouHave>> ModelsGroupedByPaxsReserva { get; } 
        = new Dictionary<string, IEnumerable<TheModelYouHave>>();
}

这是一本字典。密钥是PaxsReserva的每个不同值,并且该值是PaxsReserva具有相同值的所有项目的集合。

要将所需的模型映射到所需的模型:

public static TheModelYouWant ToTheModelYouWant(IEnumerable<TheModelYouHave> source)
{
    var grouped = source.GroupBy(src => src.PaxsReserva, src => src);
    var result = new TheModelYouWant();
    foreach(var group in grouped)
        result.ModelsGroupedByPaxsReserva.Add(group.Key, group);
    return result;
}

现在在您看来:

@foreach(var paxs in Model.ModelsGroupedByPaxsReserva.Keys)

,然后获取属于该键的各个模型:

var items = Model.ModelsGroupedByPaxsReserva[paxs];

(我叫items是因为我不知道这些是什么。)