Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用FirstOrDefault C#mvc4区分大小写的查询_C#_Asp.net Mvc 4 - Fatal编程技术网

使用FirstOrDefault C#mvc4区分大小写的查询

使用FirstOrDefault C#mvc4区分大小写的查询,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正在尝试评估用户和密码,但如果我使用大写或小写,则得到相同的结果,数据库区分大小写,但它始终忽略该配置这是我的代码: public ActionResult Login(Model.user user){ bool isValid=false; var user= db.users.FirstOrDefault(u=>u.user==user.user && u.password==user.password) if(user!=null){

我正在尝试评估用户和密码,但如果我使用大写或小写,则得到相同的结果,数据库区分大小写,但它始终忽略该配置这是我的代码:

public ActionResult Login(Model.user user){

    bool isValid=false;
    var user= db.users.FirstOrDefault(u=>u.user==user.user && u.password==user.password)
    if(user!=null){
      isValid=true;          
    }
}
我做错了什么?

试试这个:-

var query = users.FirstOrDefault(u => u.UserName == user.UserName && String.Compare(u.Password, user.Password,false) == 0);
工作

根据OP的问题(基于DB):-

这样试试

var result = from userlist in context.UserMasters
             where userlist.UserName.Equals(username)

// May be better (if usernames are unique):
var result = context.UserMasters.SingleOrDefault(u=>u.UserName == username);

if(result == null){
   // Did not find any user(s)
}

// If you want a case sensitive password check
if(result.UserPassword == pass){
  // The password is correct
}
else
{
      throw new Exception("Invalid password");
}

// If you don't
if(result.UserPassword.Equals(pass, StringComparison.InvariantCulture)){
  // The password is correct
}

这可能不起作用,如果您在数据库上查询它,并且数据库配置为“不区分大小写”。如果数据库配置为“不区分大小写”(默认情况下SQL不区分大小写),则将抛出以下错误。。。方法“boolean equals system.string system.stringcomparison”不支持转换为sql@DotNetIsMyPower-我认为实体是基于对象而不是基于SQL的,如果OP只需要比较密码,他可以在基于SQL的LINQ中比较用户名,然后在基于对象的LINQ中转换ad比较。已经更新了代码。@Rahussing让我试试这个,我会让你知道它是怎么回事,。。。谢谢大家@DuSant-刚才注意到,用户名比较也需要区分大小写。如果您已经更新了密码,请检查并让我知道。“我做错了什么?”-以明文形式存储密码并运行您自己的身份验证系统。不要重新发明轮子,尤其是在安全敏感的环境下。显然我没有那样的密码,我的问题是我键入大写或小写的用户或密码,它允许我访问网站,我需要在CodeCaster进行区分大小写的搜索
var result = from userlist in context.UserMasters
             where userlist.UserName.Equals(username)

// May be better (if usernames are unique):
var result = context.UserMasters.SingleOrDefault(u=>u.UserName == username);

if(result == null){
   // Did not find any user(s)
}

// If you want a case sensitive password check
if(result.UserPassword == pass){
  // The password is correct
}
else
{
      throw new Exception("Invalid password");
}

// If you don't
if(result.UserPassword.Equals(pass, StringComparison.InvariantCulture)){
  // The password is correct
}