LINQ匹配精确字符串的位置

时间:2015-11-14 11:50:16

标签: c# linq

var demo=context.UserDetails.SingleOrDefault(x=>x.UserName==UserName && x.Password==Password);
  

我出局甚至案件不匹配

     

例如:UserName = Demo           密码=测试以UserId = 1加载。

     

UserName = dEmo Password = test以UserId = 1加载请帮助我   使其区分大小写

2 个答案:

答案 0 :(得分:1)

那是因为您正在使用LINQ To Entities,它最终将您的Lambda表达式转换为SQL语句。这意味着区分大小写受SQL Server的支配,默认情况下它具有 SQL_Latin1_General_CP1_CI_AS 排序规则,并且不区分大小写。

使用 ObjectQuery.ToTraceString 查看实际提交给SQL Server的生成的SQL查询揭示了这个谜团:

string sqlQuery = ((ObjectQuery)context.Thingies
        .Where(t => t.Name == "ThingamaBob")).ToTraceString();

你的例子 -

var demo=((ObjectQuery)context.UserDetails.SingleOrDefault(x=>x.UserName==UserName && x.Password==Password)).ToTraceString();

Please find here for more details

答案 1 :(得分:-1)

使用等于;

 var demo = context.UserDetails.SingleOrDefault(x => x.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase) && x.Password.Equals(Password, StringComparison.CurrentCulture);