[asp.net-mvc]按用户名称筛选结果

标签: Asp.net-MVC Linq C#
发布时间: 2017/3/25 19:17:47
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有此代码︰

// 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 (这是我的 DB 钥匙) 但也由 user name 也被存储到数据库而不是一把钥匙。

不确定的语法,但我敢肯定发现不是要走的路。

解决方法 1:

您可以使用 SingleOrDefault :

db.teachers.SingleOrDefault(x => x.ID == id && x.UserName == username);

它返回单个特定元素的序列或一个默认值,如果找不到该元素。如果在结果中有多个元素,它将抛出异常。

此外,您还可以使用 Single()First()FirstOrDefault() 在这样的地方。这里是它们之间的区别︰

  • First()-抛出异常如果空或找不到,如果不会引发重复
  • FirstOrDefault()-返回默认如果空或找不到,如果不会引发重复
  • Single()-抛出异常如果空或找不到,如果将引发重复存在
  • SingleOrDefault()-返回默认如果空或找不到,如果将引发重复存在

P.S:你没说你列的名称。所以,我只被猜他们的名字。如你所愿,你可以更改它们。

赞助商