gpt4 book ai didi

c# - Visual Studio 转义 Linq 语句的第三个条件

转载 作者:行者123 更新时间:2023-12-04 10:46:50 24 4
gpt4 key购买 nike

Visual Studio c# 不会在输入条件之前检查 if 语句 userName 不应存在的第三个条件。我已经清理了解决方案清除了现金,但我仍然得到了忽略 Linq 语句的第三个条件的相同结果

 public async Task<ActionResult> Create( RegisterAsReqModel registerAsReqModel)
{
if (ModelState.IsValid)
{

//Create application user
var user = new ApplicationUser { UserName = registerAsReqModel.UserName, Email = registerAsReqModel.EmailAddress};
//assgin user to user type
user.UserType = "Req";
var result1 = db.Users.Where(m => m.UserName.Equals(registerAsReqModel.UserName)).FirstOrDefault();
var result2 = db.Users.Where(m => m.Email.Equals(registerAsReqModel.EmailAddress)).FirstOrDefault();
var result3 = from app in db.Users where app.Email.Equals(registerAsReqModel.EmailAddress) && app.UserType.Equals("Req") && app.UserName.Equals(registerAsReqModel.UserName) select app;
//
if (!result3.Any())
{
UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager)
{
RequireUniqueEmail = false,

};
var result = await UserManager.CreateAsync(user, registerAsReqModel.Password);

if (result.Succeeded)
{
await UserManager.AddToRoleAsync(user.Id, "Req");
db.RegisterAsReqModels.Add(registerAsReqModel);
db.SaveChanges();

return RedirectToAction("Index");
}
AddErrors(result);
}
else if ((result1 != null) && (result2 !=null))
{

ModelState.AddModelError("", "Email Address and UserName Both Exists!");
} else if(db.Users.Where(m=>m.Email.Equals(registerAsReqModel.EmailAddress)).FirstOrDefault()!= null)
{
ModelState.AddModelError("", "Email Address Exists!");

}
else
{
ModelState.AddModelError("", "UserName Exists!");
}

}

return View(registerAsReqModel);
}

型号分类:
public class RegisterAsReqModel
{
[Key]
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string UserName { get; set; }
[Required]
[EmailAddress]
public string EmailAddress { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
public string Password { get; set; }
}

最佳答案

result of ignoring the third condition of Linq statement



发生这种情况是因为 linq 中的第一个或第二个条件提出了错误。当多条件语句中有一个 false 时,解析器将忽略剩余的条件。根据应如何执行来更改条件将导致更有可能的结果。

此外,您正在使用 if 和 else if 条件相同。我建议也将它们组合起来,并在最后将错误显示为组合。
    if (ModelState.IsValid)
{

//Create application user
var user = new ApplicationUser { UserName = registerAsReqModel.UserName, Email = registerAsReqModel.EmailAddress };
//assgin user to user type
user.UserType = "Req";
var result1 = db.Users.Where(m => m.UserName.Equals(registerAsReqModel.UserName)).FirstOrDefault();
var result2 = db.Users.Where(m => m.Email.Equals(registerAsReqModel.EmailAddress)).FirstOrDefault();

var result3 = from app in db.Users where app.UserType.Equals("Req") && app.Email.Equals(registerAsReqModel.EmailAddress) && app.UserName.Equals(registerAsReqModel.UserName) select app;
//
if (result3 == null)
{
UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager)
{
RequireUniqueEmail = false,

};
var result = await UserManager.CreateAsync(user, registerAsReqModel.Password);

if (result.Succeeded)
{
await UserManager.AddToRoleAsync(user.Id, "Req");
db.RegisterAsReqModels.Add(registerAsReqModel);
db.SaveChanges();

return RedirectToAction("Index");
}
AddErrors(result);
}
else if ((result1 != null) && (result2 != null))
{
StringBuilder sb = new StringBuilder();
if (result2 != null)
{
sb.AppendLine("Email Address Exists!");

}
else
{
sb.AppendLine("UserName Exists!");
}
ModelState.AddModelError("", sb.ToString());
}
}

关于c# - Visual Studio 转义 Linq 语句的第三个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59669806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com