从LINQ SQLite查询C#返回实际字符​​串值

时间:2018-05-16 15:14:15

标签: c# ios sqlite xamarin.ios

我目前正在使用SQLite在Xamarin.ios上使用C#创建登录系统。我遇到的问题是向数据库发送散列密码,工作正常。在它的登录方面,我需要返回实际的哈希值,以便我可以运行一个方法,根据用户输入的值检查返回的值。

我遇到的问题是查询实际上并没有实际返回一个值,我实际上并不了解从查询中得到的内容。我运行FirstOrDefault以确保我只收到用户已经收到电子邮件的电子邮件和密码。但是,因为我没有得到字符串值,我不确定如何将它放入检查哈希值的方法中。

希望这是有道理的。这是运行查询的代码:

public void UserLogin()
    {
        string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "PmApp.db3");
        var connection = new SQLiteConnection(dbPath);


        string loginEmail = loginEmailInput.Text;
        string loginPass = loginPasswordInput.Text;

        var emailExists = (from s in connection.Table<SQLiteTables.LoginInfo>()
                           where s.Email.Equals(loginEmail)
                           where s.Password.Equals(loginPass)
                           select s).FirstOrDefault();


        Console.WriteLine(emailExists); //This is just to see what value gets returned
    }

这是返回的值:

2018-05-16 15:57:50.401 SQLite[15735:8043670] SQLite.SQLiteTables+LoginInfo

希望有人可以提供帮助。 杰米

2 个答案:

答案 0 :(得分:0)

如果您只需要返回一列,请尝试以下操作:

var emailExists = (from s in connection.Table<SQLiteTables.LoginInfo>()
                       where s.Email.Equals(loginEmail)
                       where s.Password.Equals(loginPass)
                       select s.Email).FirstOrDefault();

答案 1 :(得分:0)

if (inputData.code === 'WSDCD-D2DUK') {
  output = 'Company A';
} else if (inputData.code === '6P1CX-5U2TY'){
  output = 'Company B';
}
else {
  output = 'Not Avaliable';
}

return {result: output};

你也可以先做哈希

if (inputData.code === 'WSDCD-D2DUK') {
  output = 'Company A';
  course = 'ABC'
} else if (inputData.code === '6P1CX-5U2TY'){
  output = 'Company B';
  course = 'XYZ'
}
else {
  output = 'Not Avaliable';
  course = 'Not in one';
}

return {result: output, course};