【发布时间】: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 的位置
-
是的,我不能真正改变表格,因为如果我这样做显然会破坏整个禁令系统......