我有这段代码:
// GET: Teachers/Edit/5
public ActionResult Edit(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
string uname = User.Identity.GetUserId();
Teachers teachers = db.teachers.Find(id);
if (teachers == null)
{
return HttpNotFound();
}
ViewBag.GroupID = new SelectList(db.groups, "GroupID", "GroupName", teachers.GroupID);
return View(teachers);
}
我试图按id
(这是我的数据库密钥)过滤我返回的结果,但也是user name
,它也存储在数据库中但不作为密钥。
我不确定语法,但我很确定找不到的方法。
答案 0 :(得分:3)
您可以使用SingleOrDefault
:
db.teachers.SingleOrDefault(x => x.ID == id && x.UserName == username);
它返回序列的单个特定元素,如果找不到该元素,则返回默认值。如果结果中有多个元素,它将抛出异常。
此外 ,您也可以在这些地方使用Single()
,First()
,FirstOrDefault()
。以下是它们之间的差异:
First()
- 如果为空或未找到则抛出异常,如果重复则不抛出FirstOrDefault()
- 如果为空或未找到则返回默认值,如果重复则不返回Single()
- 如果为空或未找到则抛出异常,如果存在重复则抛出SingleOrDefault()
- 如果为空或未找到则返回默认值,如果存在重复则抛出
P.S: 您尚未说出您的专栏名称。所以,我刚刚猜到了他们的名字。您可以根据需要更改它们。