我使用此命令从数据库中提取记录:
CompletionsModel student = new CompletionsModel();
try
{
student = db.Completions.Where(p => p.UserId == UserId).Single();
}...
问题在于,当我需要使用UserId提取所有记录时,它会拉动(正如您所知)单个记录。最初,我将UserId设置为主键,但这当然意味着它必须是唯一的。这种限制将每个用户限制为一条完成记录(当用户完成20-30门课程时,这并没有多大帮助!)
有什么想法吗?
修改 用ToList()替换ToSingle()会导致以下错误:
'无法隐式转换类型 ' System.Collections.Generic.List'至 ' Blah.Models.CompletionsModel'
删除两者并简单地在.. == UserId处结束命令会引发基本相同的错误,但只是询问我是否在某个地方错过了一个演员。
编辑2:我的观点如下。
@model Blah.Models.CompletionsModel
@{
ViewBag.Title = "Transcript";
}
<h2>@ViewBag.Title</h2>
<fieldset>
<legend>StudentModel</legend>
<div class="display-field">
<table>
<tr>
<th>Course Title  </th>
<th>Course Code  </th>
<th>Completion Date  </th>
</tr>
@try
{
foreach (var item in Model.PRD.CompletionsModel)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.PRD.PRD_TIT)
</td>
<td>
@Html.DisplayFor(modelItem => item.PRD.PRD_NUM)
</td>
<td>
@Html.DisplayFor(modelItem => item.CompletionDate)
</td>
</tr>
}
}
catch
{
<p><font color="red" size="xlarge">No course completions found.</font></p>
}
</table>
</div>
</fieldset>
答案 0 :(得分:2)
你真的很亲密。除非我误解了某些内容,否则只需将Single()
替换为ToList()
:
var students = new List<CompletionsModel>();
try
{
students = db.Completions.Where(p => p.UserId == UserId).ToList();
}
...
那将检索具有匹配UserId的所有记录。实际上,如果您期望多个记录,那么对Single()
的调用应该抛出异常......