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

どうすればこれを回避できるかについての考え。グローバル変数は両方とも「文字列として」であり、DB のフィールドは varchar です。前もって感謝します

4

2 に答える 2

2

このDistinct呼び出しは一連の文字列を返します。割り当て先のプロパティは 1 つの文字列です。FirstまたはFirstOrDefaultの代わりに使用することを検討してくださいDistinct

于 2013-03-05T16:42:06.107 に答える
0

問題はここにあります:

GlobalVariables.CurrentEmailAddress = (From u In db.User_Signons
                                       Where u.Email = SearchUserEmail
                                       Select u).Distinct

Distinct個別の値のコレクションを返します。値を 1 つだけ使用する場合

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 に答える