0

我正在创建一个功能,允许用户输入电子邮件地址并单击“搜索”。这将搜索我的数据库并返回电子邮件地址,然后我将在其他方法中使用该地址随机生成密码并通过电子邮件发送。语言是 ASP.VB,数据库是 LINQ。我收到一条错误消息,提示“将 'system.linq.IQueryable(of 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”,数据库中的字段是 varchar。提前致谢

4

2 回答 2

2

Distinct调用返回一系列字符串,而您分配的属性只是一个字符串。考虑使用FirstorFirstOrDefault代替Distinct.

于 2013-03-05T16:42:06.107 回答
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

注意 :

  1. 这只会给你第一个值(显然)
  2. 如果没有结果(如果这是合法的可能性,则用于FirstOrDefault返回默认值(对于字符串)) ,它将引发异常。null
于 2013-03-05T16:42:49.587 回答