Lỗi Select: Sequence Contains No Elements ASP.NET MVC/LinQ

Thảo luận trong 'Lập Trình Website MVC5 & MVC6' bắt đầu bởi seolagi, 31/7/18.

  1. seolagi
    Tham gia ngày:
    16/4/14
    Bài viết:
    1,048
    Đã được thích:
    82
    Điểm thành tích:
    48
    Mình select dữ liệu thì bị lỗi: Lỗi Select: Sequence Contains No Elements ASP.NET MVC/LinQ bạn nào biết giúp mình với.
    Lỗi này kỳ lắm. Mình select dữ liệu ra lần đầu chạy được, xong khách nhập thông tin báo lỗi, sau đó bắt dữ liệu select lại thì nó hiện ra lỗi.
    Code lỗi Sequence Contains No Elements ASP.NET MVC/LinQ của mình ở dưới.
    Mã:
    public ActionResult Register(UserInfoList model)
    {
        try
        {
            ModelState.Clear();
            var usercheck = dbc.UserInfoLists
                        .Where(s => s.email == model.email.Trim()
                        .First();
            if (usercheck != null && usercheck.Id != -1)
            {
                ModelState.AddModelError("", "Email đã tồn tại, vui lòng điền lại!");
            }
            else
            {
               //code....
            }
       catch(Exception ex)
       {
           ModelState.AddModelError("","Đăng ký thất bại: "+ ex);
       }
    return View(model);
    }
    
    Lỗi : Sequence Contains No Elements ASP.NET MVC/LinQ khó chịu quá, nhờ cao thủ giúp
     
    Cảm ơn đã xem bài:

    Lỗi Select: Sequence Contains No Elements ASP.NET MVC/LinQ

  2. admin
    Tham gia ngày:
    22/5/13
    Bài viết:
    5,028
    Đã được thích:
    1,222
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Lỗi này xẩy ra thường xuyển khi bạn sử dụng LinQ để lấy, select dữ liệu khi bạn kết hợp với hàm .First() hay .Single().

    Khắc phục:
    • Chuyển .First() -> .FirstOrDefault()
    • Chuyển .Single -> .SingleOrDefault()
    Edit code bạn lại như sau:
    Mã:
    public ActionResult Register(UserInfoList model)
    {
        try
        {
            ModelState.Clear();
            var usercheck = dbc.UserInfoLists
                        .Where(s => s.email == model.email.Trim()
                        .FirstOrDefault();
            if (usercheck != null && usercheck.Id != -1)
            {
                ModelState.AddModelError("", "Email đã tồn tại, vui lòng điền lại!");
            }
            else
            {
               //code....
            }
       catch(Exception ex)
       {
           ModelState.AddModelError("","Đăng ký thất bại: "+ ex);
       }
    return View(model);
    }
     
    seolagi thích bài này.
  3. seolagi
    Tham gia ngày:
    16/4/14
    Bài viết:
    1,048
    Đã được thích:
    82
    Điểm thành tích:
    48
    thansk .First() -> .FirstOrDefault() đã làm thành công