0

我正在尝试使用使用 User.Identity.Name 的用户名编辑客户。

我不知道如何在控制器中编写 Where 条件。

看起来很容易。你可以帮帮我吗?谢谢。

这是我的编码。

[Authorize]
    public ActionResult Edit()
    {
        //the username gets username through User.Identity.Name.
        string username = User.Identity.Name;

        //How can I write below coding?
        //In DB, it has userName field.

        Customer customer = db.Customer.Where(userName = username);
        return View(customer);
    }

[HttpPost]
    public ActionResult Edit(Customer customer)
    {
        if (ModelState.IsValid)
        {
            db.Entry(customer).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(customer);
    }
4

2 回答 2

4

您需要了解lambda 表达式的工作原理:

.Where(c => c.UserName == username)

c是隐式类型的参数。

另外,如果你想要一个结果,你应该打电话FirstOrDefault()Where()返回一个序列。

于 2012-04-11T14:14:45.390 回答
0
Customer customer = db.Customer.Single(c=>c.UserName == username)

如果返回一个多于一个匹配元素,则抛出异常

或者

Customer customer = db.Customer.SingleOrDefault(c=>c.UserName == username);

如果返回多个匹配元素,则返回 null

于 2012-04-11T14:24:18.310 回答