var demo=context.UserDetails.SingleOrDefault(x=>x.UserName==UserName && x.Password==Password);
我出局甚至案件不匹配
例如:UserName = Demo 密码=测试以UserId = 1加载。
UserName = dEmo Password = test以UserId = 1加载请帮助我 使其区分大小写
答案 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();
答案 1 :(得分:-1)
使用等于;
var demo = context.UserDetails.SingleOrDefault(x => x.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase) && x.Password.Equals(Password, StringComparison.CurrentCulture);