在ViewModel列表中选择Distinct User ID

时间:2015-11-11 13:49:03

标签: c# model-view-controller

我对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);
    }
}

我要做的是创建一个列表,但我只希望它包含Distinct UserID的记录,我不知道如何去做。

我在不同的地方尝试过.distinct,并按用户ID分组并选择.first,但似乎没有任何工作。

有什么建议吗?

1 个答案:

答案 0 :(得分: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