我正在创建一项功能,允许用户输入电子邮件地址并点击“搜索”。这将搜索我的数据库并返回电子邮件地址,然后我将使用其他方法随机生成密码并通过电子邮件发送。语言是ASP.VB,数据库是LINQ。我收到错误说“将'system.linq.IQueryable(String)'转换为'String'时可能会发生运行时错误”
代码段是:
Protected Sub btnSearchEmail_Click(sender As Object, e As System.EventArgs) Handles btnSearchEmail.Click
Dim db As New DatabaseDataClassesDataContext()
GlobalVariables.SearchUserEmail = txtSearchEmail.Text
GlobalVariables.CurrentEmailAddress = (From u In db.User_Signons
Where u.Email = SearchUserEmail
Select u).Distinct
End Sub
关于如何解决这个问题的任何想法。全局变量都是“As String”,DB中的字段是varchar。提前致谢
答案 0 :(得分:2)
Distinct
调用返回一系列字符串,您指定的属性只是一个字符串。请考虑使用First
或FirstOrDefault
代替Distinct
。
答案 1 :(得分:0)
问题在于:
GlobalVariables.CurrentEmailAddress = (From u In db.User_Signons
Where u.Email = SearchUserEmail
Select u).Distinct
Distinct
返回不同值的集合。如果您只想使用一个值
var user = (From u In db.User_Signons
Where u.Email = SearchUserEmail
Select u).First
GlobalVariables.CurrentEmailAddress = user.Email
' Do something with password
请注意:
FirstOrDefault
返回默认值(字符串为null
),如果这是合法的可能性。