Linq中的字节转换

本文关键字:转换 字节 Linq | 更新日期: 2023-09-27 18:06:09

请帮助我在Linq。我是linq的新手。请看下面我的代码

    public Entities.ServiceResult<Customer> CustomerChangePassword(string CustomerId, string OldPassword, string NewPassword)
    {
        long _customerId = Convert.ToInt32(CustomerId);
        byte _oldPassword = Convert.ToByte(OldPassword);
        var _result = (from c in context.customers where (c.CustomerId == _customerId && c.Password == _oldPassword) select c.Password.Single).SingleOrDefault();
        if (_result != null)
        {
            string newpassword;
            newpassword = Convert.ToString(_result.Password);
            newpassword = NewPassword;
            context.SaveChanges();
            return new Entities.ServiceResult<Customer>
            {
                ErrorState = 0,
                Message = "Password Changed Successfully."
            };
        }
        else
        {
            return new Entities.ServiceResult<Customer>
            {
                ErrorState = 1,
                Message = "Old Password Is Wrong."
            };
        }
    }

上面的代码我做了一个修改密码的功能。在这个代码c.密码是字节列,我从移动作为字符串传递。在这种情况下如何处理。请帮我做这件事

Linq中的字节转换

查找客户时无需检查密码。那是因为你正在处理一个iquerable,你不能在那里轻松地做这种工作。此外,您还应该更改密码,以便告诉上下文为您保存密码。也考虑一下将字符串转换为字节数组的代码。使用SequenceEqual方法,您可以检查两个数组是否相等。

我希望下面的代码有帮助:

    public Entities.ServiceResult<Customer> CustomerChangePassword(string CustomerId, string OldPassword, string NewPassword)
    {
        long _customerId = Convert.ToInt32(CustomerId);
        byte[] _oldPassword = Encoding.ASCII.GetBytes(OldPassword);
        var _result = from c in context.customers where (c.CustomerId == _customerId) select c;
        if (_result == null || _result.Count() == 0)
        {
            return new Entities.ServiceResult<Customer>
            {
                ErrorState = 1,
                Message = "User does not exists."
            };
        }
        var customer = _result.First();
        if (!customer.Password.SequenceEqual(_oldPassword))
        {
            return new Entities.ServiceResult<Customer>
            {
                ErrorState = 1,
                Message = "Old Password Is Wrong."
            };
        }
        customer.Password = Encoding.ASCII.GetBytes(NewPassword);
        context.SaveChanges();
        return new Entities.ServiceResult<Customer>
        {
            ErrorState = 0,
            Message = "Password Changed Successfully."
        };
    }

好运。