2013-03-05 2 views
0

전자 메일 주소를 입력하고"검색 "을 클릭 할 수있는 기능을 만듭니다. 내 데이터베이스와 전자 메일 주소를 반환합니다. 다른 방법으로 무작위로 암호를 생성하고 전자 메일로 보내면됩니다. 언어는 ASP.VB이고 데이터베이스는 LINQ입니다. "시스템을 변환 할 때 런타임 오류가 발생할 수 있습니다. 문자열 '' '에서'(문자열의) .linq.IQueryable는 코드 세그먼트는 "system.linq.IQueryable (문자열) '을'문자열 '로 변환하면 런타임 오류가 발생할 수 있습니다.

입니다

:.

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 

나는이 문제를 얻을 수있는 방법에 대한 생각을 전역 변수 s는 모두 "As String"이고 DB의 필드는 varchar입니다. 미리 감사드립니다.

답변

2

Distinct 호출은 일련의 문자열을 반환하며 할당하려는 속성은 하나의 단일 문자열입니다. Distinct 대신 First 또는 FirstOrDefault을 사용하는 것이 좋습니다.

+0

빠른 응답을 주셔서 감사합니다. "first"로 변경하고 "firstordefaul t "도 있지만 이제는"User_Signon을 String으로 변환 할 수 없습니다 "라는 오류 메시지가 나타납니다. User_Signon은 필드가 아닌 테이블입니다. – Gavin

+0

@ 개 빈 : 'u를 선택하십시오'를 '이메일 선택'으로 변경하십시오. – cdhowie

0

문제는 여기에 있습니다 :

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

Distinct는 고유 값의 컬렉션을 반환합니다.

  1. 이는 당신에게 어떠한 결과가없는 경우는 예외가 발생합니다
  2. (명백하게) 첫 번째 값을 제공 (에 FirstOrDefault를 사용 : 당신은 단지 하나 개의 값 사용을하는 것이

    var user = (From u In db.User_Signons 
          Where u.Email = SearchUserEmail 
          Select u).First 
    
    GlobalVariables.CurrentEmailAddress = user.Email 
    
    ' Do something with password 
    

    참고하십시오 합법적 인 가능성이있는 경우 기본값 (문자열의 경우 null)을 반환하십시오.

+0

빠른 응답을 주셔서 감사합니다. 나는 "first"로 변경하고 "firstordefault"도 시도했지만 이제는 "User_Signon을 String으로 변환 할 수 없습니다"라는 오류가 발생합니다. User_Signon은 필드가 아닌 테이블입니다. – Gavin

+0

반환 할 필드는 무엇입니까? 알려진 값과 일치하는 레코드를 검색 할 때'u.EMail'을 반환하는 것은 어리석은 것처럼 보입니다. –

+0

전제는 전자 메일이 테이블의 고유 식별자라는 것입니다. 암호의 경우 사용자가 전자 메일 주소를 입력합니다. 레코드에 대해 데이터베이스와 대조하여 암호가 생성되어 주소로 전자 메일로 전송됩니다. 그것은 ha를 시작하지 않는다는 것을 제외하고는 코드에 오류가없는 것으로 보인다. 한 걸음 앞으로 두 걸음 뒤로 – Gavin

관련 문제