Bla*_*jok 1 c# bytearray varbinary linq-to-sql
我是整个LINQ系统的新手,我将密码哈希并存储在我的数据库的varbinary字段中,现在我想从我的数据库中获取该值并将其存储在字节数组中以使用LINQ进行比较.我之前做过这样的事情:
System.Data.SqlTypes.SqlBytes sqlPassBinary = dr.GetSqlBytes(dr.GetOrdinal("Password"));
Run Code Online (Sandbox Code Playgroud)
现在我想尝试应用这个相同的概念,但这次使用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;
}
Run Code Online (Sandbox Code Playgroud)
我得到这个错误:

此错误表示LINQ返回的集合是一个System.Data.Linq.Binary对象,您不能使用它来初始化byte[],也不能显式转换它.
首先,您需要将其转换为数组,使用LINQ的内置ToArray()函数.
使用
byte[] sqlbinary = login.FirstOrDefault().Password.ToArray();
Run Code Online (Sandbox Code Playgroud)
应该没问题.
| 归档时间: |
|
| 查看次数: |
4349 次 |
| 最近记录: |