【问题标题】:Select Distinct User ID in a ViewModel List在 ViewModel 列表中选择不同的用户 ID
【发布时间】:2015-11-11 13:49:03
【问题描述】:

我对 MVC 很陌生,所以可能有一个超级简单的答案。

以下是我目前的控制器代码:

public class StudentBanController : Controller
{
    SWGS_GlobalDataEntities DataContext = new SWGS_GlobalDataEntities();
    // GET: StudentBan
    public ActionResult DisplayBans()
    {
        var theData = DataContext.tblGlobalLogOnLogOffStudentBans.ToList();


          List<StudentBanDisplayViewModel> BanList = theData
              .Select(viewModel => new StudentBanDisplayViewModel
              {
                  ID = viewModel.ID,
                  UserID = viewModel.UserID,
                  StartBan = viewModel.StartBan,
                  EndBan = viewModel.EndBan
              }).Where(b => b.EndBan > DateTime.Today).ToList();

        return PartialView(BanList);
    }
}

我想做的是创建一个列表,但我只希望它包含不同用户 ID 的记录,我不知道该怎么做。

我已经在不同的地方尝试过 .distinct 并且还按用户 ID 分组并选择 .first 但似乎没有任何效果。

有什么建议吗?

【问题讨论】:

  • 如果您只想要视图中的用户 ID 列表而不需要其他任何内容,您可以创建用户 ID 列表 并将其返回到您的视图,确保您的视图现在绑定到该类型,或者您可以创建一个新的视图模型,其中用户 ID 作为属性(绑定到建议的视图模型)并将您的视图绑定到它。但是,如果您需要将视图绑定到 StudentBanDisplayViewModel 并且仍然需要此对象保存的其他信息,并且您想要一个单独的用户 ID 列表,例如下拉列表或其他内容,您可以将它们放在视图包中吗?或者将它们添加到您现有的 StudentBanDisplayViewModel
  • 澄清一下,我需要所有数据。该列表在部分视图中填充了一个表,目前每个用户有多个表行。我想过滤它,使每个用户 ID 只出现一次。
  • 你的表中是否有多行:用户的 tblGlobalLogOnLogOffStudentBans ?
  • 您可以创建一个使用 PARTITION BY USERID 的视图(假设您使用 tsql),然后只选择 Partition value = 1 的位置
  • 是的,我不能真正改变表格,因为如果我这样做显然会破坏整个禁令系统......

标签: c# model-view-controller


【解决方案1】:

试试下面的

 List<StudentBanDisplayViewModel> BanList = theData
          .Select(viewModel => new StudentBanDisplayViewModel
          {
              ID = viewModel.ID,
              UserID = viewModel.UserID,
              StartBan = viewModel.StartBan,
              EndBan = viewModel.EndBan
          }).Where(b => b.EndBan > DateTime.Today)
            .DistinctBy(s => new {s.UserID}).ToList();

How to remove duplicates from collection using IEqualityComparer, LinQ Distinct

您将需要以下内容 https://code.google.com/p/morelinq/source/browse/MoreLinq/DistinctBy.cs?r=d4396b9ff63932be0ab07c36452a481d20f96307

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2017-09-21
    相关资源
    最近更新 更多