【发布时间】:2014-05-14 09:48:12
【问题描述】:
我是整个 LINQ 系统的新手,我的密码经过哈希处理并存储在数据库的 varbinary 字段中,现在我想从数据库中获取该值并将其存储在字节数组中以使用 LINQ 进行比较.我以前是这样做的:
System.Data.SqlTypes.SqlBytes sqlPassBinary = dr.GetSqlBytes(dr.GetOrdinal("Password"));
现在我想尝试应用同样的概念,但这次使用的是 LINQ。我试过了,但没有用:
public bool Authenticate(string user, string pass)
{
***LINQDataContext d = new ***LINQDataContext();
var login = from us in d.Users
join ur in d.UserRoles on us.UserRoleID equals ur.UserRoleID
where us.Username == user
select us;
if ((login as IEnumerable<object>).Any())
{
System.Web.HttpContext.Current.Session["UserID"] = login.FirstOrDefault().UserID.ToString();
System.Web.HttpContext.Current.Session["UserRole"] = login.FirstOrDefault().UserRole.ToString();
byte[] sqlbinary = (byte[]) login.FirstOrDefault().Password;;
return true;
}
return false;
}
我得到这个错误:
【问题讨论】:
-
什么是
login?您需要向所有成员展示完整的代码示例。 -
“它不起作用”告诉我们非常很少了解实际发生的情况。是不是编译失败了?它是否编译但给出了执行时异常?它是否默默地给了你不正确的数据?请提供更多信息。 (想想如果有人向您提出问题并要求您帮助解决问题,您想知道什么。)
标签: c# linq-to-sql bytearray varbinary