【问题标题】:Remove Duplicate/Similar Data from Model从模型中删除重复/相似的数据
【发布时间】:2020-04-01 21:55:36
【问题描述】:

我正在尝试从模型 This is a scorecard. There can be multiple users on a single scorecard. Session ID represents a SINGLE scorecard. 中删除重复数据

我想将会话 ID 组合在一起,并为每个会话显示一个引导卡。有点像这样...This is still showing a card for multipole session 1 ID's. I need 1 card for every different session ID

我尝试在第一个 foreach 中嵌套第二个 foreach,以尝试遍历 sessionId 的 `@foreach(模型中的变量项)

        {

            foreach (var session in item.SessionId)
            {
                <div class="card">
                    <div class="card-header">

                        <h5 class="card-title text-center">@Html.DisplayFor(modelItem => item.CourseName)</h5>
                    </div>
                    <div class="card-body">
                        <ul class="list-group list-group-flush">
                            <li class="list-group-item">@Html.DisplayFor(modelItem => item.UserName)</li>
                        </ul>
                    </div>
                    <div class="card-footer">
                        <p class="card-text text-center">@Html.DisplayFor(modelItem => item.Date)</p>
                    </div>
                </div>
            }





        }`

我创建了一个变量,它检查了 sessionId 的最后一次迭代并将其与当前的一个`@foreach(模型中的变量项)进行了比较

        {
            var lastitem = Model.Last();

            if (item.SessionId != lastitem.SessionId)
            {
                <div class="card">
                    <div class="card-header">

                        <h5 class="card-title text-center">@Html.DisplayFor(modelItem => item.CourseName)</h5>
                    </div>
                    <div class="card-body">
                        <ul class="list-group list-group-flush">
                            <li class="list-group-item">@Html.DisplayFor(modelItem => item.UserName)</li>
                        </ul>
                    </div>
                    <div class="card-footer">
                        <p class="card-text text-center">@Html.DisplayFor(modelItem => item.Date)</p>
                    </div>
                </div>
            }





        }`

我也尝试过使用 for 循环...

<div class="card-deck">
        <div class="card">
            @for (int i = Model.FirstOrDefault().SessionId; i < Model.Count(); i = i + 1)
            {
                <div>@i</div>
            }
        </div>
    </div>

我只有 8 个会话 ID 编号 (1-8),但每个会话有多个会话 ID(即 36 个会话 1 ID)。所以当我以 Model.Count() 为目标时,它会返回一个巨大的数组。

为了解决这个问题,我尝试了...

<div class="card-deck">
        <div class="card">
            @for (int i = Model.FirstOrDefault().SessionId; i < Model.Distinct().FirstOrDefault().SessionId; i = i + 1)
            {
                <div>@i</div>
            }
        </div>
    </div>

我试图定位选定的项目 Distinct Session Id,但它没有返回任何内容。

【问题讨论】:

  • 到目前为止你做了什么?分享你的努力,其他人会帮助你完善它,但你必须有一些工作要做。 SO 不是为了实现想法。
  • 请不要添加代码图片,添加您的实际代码

标签: c# asp.net-mvc model-view-controller razor


【解决方案1】:

这是我想出的:

@for (int s = Model.Distinct().FirstOrDefault().SessionId; s <= Model.Distinct().LastOrDefault().SessionId; s = s + 1)
        {

}

这只给了我需要的 8 个会话。

【讨论】:

    【解决方案2】:
    List<T> withDupes = LoadData();
    List<T> noDupes = withDupes.Distinct().ToList();
    

    使用这个并返回您的新模型,然后使用 foreach 表 :)

    ps:如果您的列表很大,请不要使用 Razor。返回一个 json 对象并使用像 datatable.js 这样的插件;)

    再见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 2020-07-21
      • 2019-05-13
      • 2018-03-23
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多